基础字符、转义字符与定位字符
| 代码 | 说明 |
|---|
| . | 匹配除换行符(\n)以外的任意字符 |
| \w | 匹配字母(a-z,A-Z)、数字(0-9)、下划线(_)、汉字 |
| \W | 匹配任意不是字母、数字、下划线、汉字的字符 |
| \s | 匹配任意的空白符(等价于[ \f\n\r\t\v]) |
| \S | 匹配任意不是空白符的字符(等价于[^ \f\n\r\t\v]) |
| \d | 匹配数字([0-9]) |
| \D | 匹配任意非数字的字符([^0-9]) |
| [abc] | 匹配a、b、c任何一个 |
| [^abc] | 匹配除了a、b、c以外的任意字符 |
| [a-z] | 匹配所有小写字母 |
| [^a-z] | 匹配非所有小写字母 |
| [a-z0-9A-Z] | 匹配所有字母和数字 |
| [^a-z0-9A-Z] | 匹配所有不是字母和数字的字符 |
| [set1-[set2]] | 字符减法表达式(比如:[a-z-[mnx]],表除mnx外的所有小写字母),set可以是正字符组或负字符组 |
| \f | 换页符(Form feed) |
| \n | 换行符(Newline) |
| \r | 回车符(Return) |
| \t | 制表符(Tab) |
| \v | 垂直制表符(Vertical return) |
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
| *? | 重复零次或更多次,但尽可能少重复 |
| +? | 重复一次或更多次,但尽可能少重复 |
| ?? | 重复零次或一次,但尽可能少重复 |
| {n,}? | 重复n次或更多次,但尽可能少重复 |
| {n,m}? | 重复n到m次,但尽可能少重复 |
| \A | 匹配必须出现在字符串的开头(输入:a88 b99 c666,则\w+匹配三组,\A\w+则只匹配a88,\w+\Z则只匹配c666) |
| \Z | 匹配必须出现在字符串的末尾或出现在字符串末尾的 \n 之前 |
| \z | 匹配必须出现在字符串的末尾 |
| \G | 匹配必须在上一个匹配结束的位置进行;如果以前没有匹配项,则从开始进行匹配的字符串中的位置开始。 |
| \b | 匹配必须出现在 \w 和 \W 字符之间的边界上,如果用在中括号[\b]中,则表示Backspace退格键字符。 |
| \B | 匹配不得出现在 \b 边界上 |
| ^ | 默认情况下,必须从字符串的开头开始匹配;在多行模式中,必须从该行的开头开始。 |
| $ | 默认情况下,匹配必须出现在字符串的末尾,或者出现在输入字符串末尾的 \n 之前。 |
替换结构
| 代码 | 说明 |
|---|
| $number | 替换按组 number匹配的子字符串。 |
| ${name} | 替换按命名组 name匹配的子字符串。 |
| $$ | 替换字符"$" |
| $& | 替换整个匹配项的一个副本。 |
| $` | 替换匹配前的输入字符串的所有文本。 |
| $’ | 替换匹配后的输入字符串的所有文本 |
| $_ | 替换整个输入字符串。 |
分组结构
| 代码 | 说明 |
|---|
(subexpression) | 编号组,同一正则表达式中可以用\1,\2,…来依次引用,用$1,$2,…来替换 |
(?<name>subexpression) | 命名组,同一正则表达式中可以用\k<name>来引用 ,替换结构中使用${name}来替换 |
(?'name'subexpression) | 命名组,同一正则表达式中可以用\k<name>来引用 ,替换结构中使用${name}来替换 |
(?:subexpression) | 非捕获组,避免分组被捕获 |
(?>subexpression) | 原子组(原子组不回溯,合理使用可以提升正则表达式执行引擎的性能。) |
(?<=subexpression) | 前面有什么(对于输入a,b,c,模式(?<=,)\w)可以匹配b和c,因为a前面没有逗号 |
(?<!subexpression) | 前面没什么(对于输入a,b,c,模式(?<!,)\w)可以匹配a,因为b和c前面有逗号 |
(?=subexpression) | 后面有什么(对于输入a,b,c,模式\w(?=,))可以匹配a和b,因为c后面没有逗号 |
(?!subexpression) | 后面没什么(对于输入a,b,c,模式\w(?!,))可以匹配c,因为a和b后面有逗号 |
either/or结构
格式:exp1|exp2
示例:(i|you) love (high|short) man
注意:[]只能取单个字符,|能取多个字符。
条件匹配的表达式
格式:(?(expression)yes)或(?(expression)yes|no)