正则表达式

Favori,

Regexp

图:Peter Tarka

字符

表达式描述
[abc]字符集。匹配集合中所含的任一字符。
[ ^abc]否定字符集。匹配任何不在集合中的字符。
[a-z]字符范围。匹配指定范围内的任意字符。
.匹配除换行符以外的任何单个字符。
\转义字符。
\w匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。
\W匹配任何非字母数字(等价于[ ^a-za-z0-9_])。
\d数字。匹配任何数字。
\D非数字。匹配任何非数字字符。
\s空白。匹配任何空白字符,包括空格、制表符等。
\S非空白。匹配任何非空白字符。

分组和引用

表达式描述
(expression)分组。匹配括号里的整个表达式。
(?:expression)非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。
\num对前面所匹配分组的引用。比如(\d)\1 可以匹配两个相同的数字,(Code)(Sheep)\1\2 则可以匹配 CodeSheepCodeSheep。

锚点/边界

表达式描述
^匹配字符串或行开头。
$匹配字符串或行结尾。
\b匹配单词边界。比如 Sheep\b 可以匹配 CodeSheep 末尾的 Sheep,不能匹配 CodeSheepCode 中的 Sheep
\B匹配非单词边界。比如 Code\B 可以匹配 HelloCodeSheep 中的 Code,不能匹配 HelloCode 中的 Code。

数量表示

表达式描述
?匹配前面的表达式 0 个或 1 个。即表示可选项。
+匹配前面的表达式至少 1 个。
*匹配前面的表达式 0 个或多个。
|或运算符。并集,可以匹配符号前后的表达式。
{m}匹配前面的表达式 m 个。
{m,}匹配前面的表达式最少 m 个。
{m,n}匹配前面的表达式最少 m 个,最多 n 个。

预查断言

表达式描述
(?=)正向预查。比如 Code(?=Sheep)能匹配 CodeSheep 中的 Code,但不能匹配 CodePig 中的 Code。
(?!)正向否定预查。比如 Code(?!Sheep)不能匹配 CodeSheep 中的 Code,但能匹配 CodePig 中的 Code。
(?<=)反向预查。比如(?<=Code)Sheep 能匹配 CodeSheep 中的 Sheep,但不能匹配 ReadSheep 中的 Sheep。
(?<!)反向否定预查。比如(?<!Code)Sheep 不能匹配 CodeSheep 中的 Sheep,但能匹配 ReadSheep 中的 Sheep。

特殊标志

表达式描述
/…/i忽略大小写。
/…/g全局匹配。
/…/m多行修饰符。用于多行匹配。