常用匹配
# 匹配中文
[^\x00-\xff]
# 匹配任意字符 + 换行
[\s\S]*
# 匹配英文字符
[ -~]
# 匹配中文字符
[^ -~]
匹配
\b 匹配一个位置(单词的开头或结尾) \w 匹配一位母或数字或下划线或汉字
\d 匹配一位数字字 \s 匹配一位任意的空白符
. 匹配一位换行符以外的任意字符 ^ 匹配字符串的开始(行)
$ 匹配字符串的结束 ^$ 匹配空白行
[a-z] 字符集的选择,仅仅代表一个字符 ^[a-z] 字符集的反向选择
限定符
* 重复前一个RE字符,0次或0次以上
+ 重复前一个RE字符,1次或1次以上
? 重复前一个RE字符,0次或1次
{n} 重复前一个RE字符,n次
{n,} 重复前一个RE字符,n次或n次以上
{n,m} 重复前一个RE字符,n~m次
分支条件,分组
| // 满足任意一规则都应当成匹配
() // 指定子表达式,从左至右,默认分组号1,2,3,……
零宽断言
// 捕获
(exp) 匹配exp,并捕获文本到自动命名组
(?<name>exp) 匹配exp,并捕获文本到name组
(?:exp) 匹配exp,但不捕获文本
// 零宽断言,匹配位置,不消耗字符(匹配文本前后缀)
(?=exp) 断言自身位置的后面,匹配exp
(?<=exp) 断言自身位置的前面,匹配exp
(?!exp) 断言自身位置的后面,不匹配exp
(?<!exp) 断言自身位置的前面,不匹配exp
// 注释
(?#comment) 提供注释
懒惰与贪婪
// 正则默认为贪婪模式,使用懒惰模式时如下
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
网友评论