\d (digital) 匹配一个数字字符。= [0-9]
\D = [^0-9]
\w (word) 匹配包括下划线的任何单词字符。=[A-Za-z0-9_]。
\W =[^A-Za-z0-9_]
\s (space) 匹配任何空白字符,包括空格、制表符、换页符等等。= [ \f\n\r\t\v]
\S 匹配任何非空白字符。= [^ \f\n\r\t\v]
.(点号) 任一字符
[...] 括号中的任一字符
[^…] 非括号中的任一字符
====================================
{n} {n,} {n,m} 匹配前面的字符或组串出现的次数区间
? 匹配前面的字符0次或1次
+ 匹配前面的字符至少1次
* 匹配前面的字符至少0次
如果上面的基础上,后面跟一个“?”,则表示取区间开始基数为判断准则
例子:
字符串:1abc31s
reg:\d+
mach:{1}{31}
reg:\d+?
mach:{1}{3}{1}
^ 匹配行首(^sel)
$ 匹配行尾(fin$)
====================================
| 指定字符替换,即该位置可以是|两边的任一个表达式
\ 转义
如:
\. 匹配“.”
\* 匹配“*”
\( 匹配“(”
\) 匹配”)”
\? 匹配“?“
\+ 匹配“+“
\| 匹配“|“
\{ 匹配“{“
\} 匹配“}“
\^ 匹配“^“
\$ 匹配“$“
\n 匹配换行符
\r 匹配回车
\t 匹配Tab键
\v 匹配垂直制表符
\f 匹配换页符
() 捕获符号
====================================
(exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言(定义:像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也
被称为零宽断言。)
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 注释;正则表达式不做处理,用于注释
例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)
例子:
字符串:I'm singing while you're dancing strings
reg: \b\w+(?=ing\b)
mach: {sing}{danc}
字符串:reading a book
reg: (?<=\bre)\w+\b
mach: {ading}
例子:
字符串:abcme one youabcyou two heabc
reg: \b((?!abc)\w)+\b
mach: {one}{two}
忽略模式里的空白符:
(?<= # 断言要匹配的文本的前缀
<(\w+)> # 查找尖括号括起来的字母或数字(即HTML/XML标签)
) # 前缀结束
.* # 匹配任意文本
(?= # 断言要匹配的文本的后缀
<\/\1> # 查找尖括号括起来的内容:前面是一个"/",后面是先前捕获的标签
) # 后缀结束
====================================