正则表达式匹配规则
1.字符
表达式 | 描述 |
[abc] |
字符集。匹配集合中所含的任一字符。 |
[^abc] |
否定字符集。匹配任何不在集合中的字符。 |
[a-z] |
字符范围。匹配指定范围内的任意字符。 |
. |
匹配除换行符以外的任何单个字符。 |
\ |
转义字符。 |
\w |
匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_] )。 |
\W |
匹配任何非字母数字(等价于[^A-Za-z0-9_] )。 |
\d |
数字。匹配任何数字。 |
\D |
非数字。匹配任何非数字字符。 |
\s |
空白。匹配任何空白字符,包括空格、制表符等。 |
\S |
非空白。匹配任何非空白字符。 |
2.分组和引用
表达式 | 描述 |
(expression) |
分组。匹配括号里的整个表达式。 |
(?:expression) |
非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 |
\num |
对前面所匹配分组的引用。比如(\d)\1 可以匹配两个相同的数字,(Code)(Sheep)\1\2 则可以匹配CodeSheepCodeSheep 。 |
3.锚点/边界
表达式 | 描述 |
^ |
匹配字符串或行开头。 |
$ |
匹配字符串或行结尾。 |
\b |
匹配单词边界。比如Sheep\b 可以匹配CodeSheep 末尾的Sheep ,不能匹配CodeSheepCode 中的Sheep |
\B |
匹配非单词边界。比如Code\B 可以匹配HelloCodeSheep 中的Code ,不能匹配HelloCode 中的Code 。 |
4.数量表示
表达式 | 描述 |
? |
匹配前面的表达式0个或1个。即表示可选项。 |
+ |
匹配前面的表达式至少1个。 |
* |
匹配前面的表达式0个或多个。 |
| |
或运算符。并集,可以匹配符号前后的表达式。 |
{m} |
匹配前面的表达式m个。 |
{m,} |
匹配前面的表达式最少m个。 |
{m,n} |
匹配前面的表达式最少m个,最多n个。 |
5.预查断言
表达式 | 描述 |
(?=) |
正向预查。比如Code(?=Sheep) 能匹配CodeSheep 中的Code ,但不能匹配CodePig 中的Code 。 |
(?!) |
正向否定预查。比如Code(?!Sheep) 不能匹配CodeSheep 中的Code ,但能匹配CodePig 中的Code 。 |
(?<=) |
反向预查。比如(?<=Code)Sheep 能匹配CodeSheep 中的Sheep ,但不能匹配ReadSheep 中的Sheep 。 |
(?<!) |
反向否定预查。比如(?<!Code)Sheep 不能匹配CodeSheep 中的Sheep ,但能匹配ReadSheep 中的Sheep 。 |
6.特殊标志
表达式 | 描述 |
/.../i |
忽略大小写。 |
/.../g |
全局匹配。 |
/.../m |
多行修饰符。用于多行匹配。 |