技术文章
正则表达式工具
正则表达式知识
字符,使用时另加\ | 解释 | ||
---|---|---|---|
x | 字符x(x可代表任何合法的字符) | ||
\0mnn | 八进制数0mnn所表示的字符 | ||
\xhh | 十六进制值0xhh所表示的字符 | ||
\uhhhh | 十六进制值0xhhhh所表示的UNICODE字符 | ||
\t | 制表符(‘\u0009’) | ||
\n | 新行(换行)符(‘\u000A’) | ||
\r | 回车符(‘\u000D’) | ||
\f | 换页符(‘\u000C’) | ||
\a | 报警(bell)符(‘\u0007’) | ||
\e | Escape符(‘\u001B’) | ||
\cx | x对应的控制符。例如\cM匹配Ctrl-M。x值必须为A~Z或a~z之一 |
特殊字符,转义才加\ | 解释 | ||
---|---|---|---|
$ | 匹配一行的结尾 | ||
^ | 匹配一行的开头 | ||
() | 标记子表达式的开始和结束位置 | ||
[] | 用于确定中括号表达式的开始和结束位置 | ||
{} | 用于标记前面子表达式的出现频度 | ||
* | 指定前面子表达式可以出现零次或多次 | ||
+ | 指定前面子表达式可以出现一次或多次 | ||
? | 指定前面子表达式可以出现零次或一次 | ||
. | 匹配除换行符\n之外的任何单字符 | ||
\ | 用于转义下一个字符,或指定八进制、十六进制字符 | ||
| | 指定两项之间任选一项 |
预定义字符,即通配符 使用时另加\ |
说明 | ||
---|---|---|---|
. | 可以匹配任何字符 | ||
\d | 匹配0-9的所有数字 | ||
\D | 匹配非数字 | ||
\s | 匹配所有的空白字符,包括空格、制表、回车、换页、换行 | ||
\S | 匹配所有的非空白字符 | ||
\w | 匹配所有的单词字符,包括0-9、26个英文字母和下划线 | ||
\W | 匹配所有的非单词字符 |
方括号表达式 | 说明 | ||
---|---|---|---|
表示枚举 | 如[abc]表示abc中任意一字符 | ||
表示范围:- | 如[a-f]表示a~f范围内任意字符 | ||
表示求否:^ | 如[^abc]表示非abc的任意字符 | ||
表示“与”运算:&& | 如[a-z&&[^bc]]表示a-z范围内除bc外的所有字符 | ||
表示“并”运算 | 如[a-d[m-p]]表示[a-dm-p] |
边界匹配符 | 说明 | ||
---|---|---|---|
^ | 行的开头 | ||
$ | 行的结尾 | ||
\b | 单词的边界 | ||
\B | 非单词的边界 | ||
\A | 输入的开头 | ||
\G | 前一个匹配的结尾 | ||
\Z | 输入的结尾,仅用于最后的结束符 | ||
\z | 输入的结尾 |
贪婪模式 | 勉强模式 | 占有模式 | 说明 |
---|---|---|---|
X? | X?? | X?+ | X表达式出现零次或一次 |
X* | X*? | X*+ | X表达式出现零次或多次 |
X+ | X+? | X++ | X表达式出现一次或多次 |
X{n} | X{n}? | X{n}+ | X表达式出现n次 |
X{n,} | X{n,}? | X{n,}+ | X表达式最少出现n次 |
X{n,m} | X{n,m}? | X{n,m}+ | X表达式最少出现n次,最多出现m次 |
字符 | 描述 | 示例 |
---|---|---|
(pattern) | 匹配pattern并捕获结果,自动设置组号。 | (abc)+d 匹配abcd或者abcabcd |
(?<name>pattern)或(?’name’pattern) | 匹配pattern并捕获结果,设置name为组名。 | |
\num | 对捕获组的反向引用。其中 num 是一个正整数。 | (\w)(\w)\2\1 匹配abba |
\k<name>或\k’name’ | 对命名捕获组的反向引用。其中 name 是捕获组名。 | (?<group>\w)abc\k<group> 匹配xabcx |
字符 | 描述 | 示例 |
---|---|---|
(?:pattern) | 匹配pattern,但不捕获匹配结果。 | industr(?:y|ies) 匹配”industry”或”industries” |
(?=pattern) | 零宽度正向预查,不捕获匹配结果。 | Windows(?=95|98|NT|2000) 匹配 “Windows2000” 中的 “Windows” 不匹配”Windows3.1” 中的 “Windows” |
(?!pattern) | 零宽度负向预查,不捕获匹配结果 | Windows(?!95|98|NT|2000) 匹配”Windows3.1”中的”Windows” 不匹配”Windows2000”中的 “Windows” |
(?<=pattern) | 零宽度正向回查,不捕获匹配结果。 | 2000(?<=Office|Word|Excel) 匹配”Office2000” 中的”2000” 不匹配 “Windows2000”中的 “2000” |
(?<!pattern) | 零宽度负向回查,不捕获匹配结果。 | 2000(?<!Office|Word|Excel) 匹配”Windows2000”中的”2000” 不匹配”Office2000”中的”2000” |
字符 | 描述 | 示例 |
---|---|---|
(?#comment) | comment是注释,不对正则表达式的处理产生任何影响 | 2[0-4]\d(?#200-249)|25[0-5](?#250-255)|1?\d\d?(?#0-199) 匹配0-255的整数 |