1 元字符
^ 开始 ^cat 表示只匹配以cat为开头的
$ 结束 cat$ 表示只匹配以cat为结束的
- 范围 a-z
[] 字符组 匹配中括号中的任意内容 [ab]类似(a|b) 但是字符组只能匹配一个
() 分组 可以捕获匹配的内容 如果需要替换操作 则必须使用
(?:) 非捕捉分组 不会捕捉分组的内容
[^ ] 排除中括号中的内容
. 匹配任何单个字符 除换行
? 可选项 表示可以出现0次或一次 colou?r 可以匹配color和colour
+ 和?很像 表示出现至少一次
* 永远不会匹配失败 可以出现任意多次 即使没有
{} 重复次数 {1,5} [1,5]闭区间
占有量词 数量词? + * {}后加+ 如X?+ 不会回溯 效率高一点
懒惰匹配 ? 如X?? 默认为贪心 都有回溯
\d [0-9] \D 取非
\w [a-zA-Z0-9] \W
\s [.\f\n\r\t\v] 空白字符
\b 单词边界
/i 不区分大小写
/s /m 单行匹配 多行匹配
2 反向引用
([ab])\1 如果分组中匹配成功 将捕获匹配的内容替代\1
3 零宽断言
(?<=<a>)\w+(?=</a>)
<a>cat</a>
(?<=<a>)会匹配到<a> 然后从下一个位置c开始匹配\w+
(?=</a>)会匹配到</a> 然后在t结束
得到的结果就是cat
如果在不支持断言的情况
(<br>)(\w+)(?=</br>)
将得到<br>和cat
^ 开始 ^cat 表示只匹配以cat为开头的
$ 结束 cat$ 表示只匹配以cat为结束的
- 范围 a-z
[] 字符组 匹配中括号中的任意内容 [ab]类似(a|b) 但是字符组只能匹配一个
() 分组 可以捕获匹配的内容 如果需要替换操作 则必须使用
(?:) 非捕捉分组 不会捕捉分组的内容
[^ ] 排除中括号中的内容
. 匹配任何单个字符 除换行
? 可选项 表示可以出现0次或一次 colou?r 可以匹配color和colour
+ 和?很像 表示出现至少一次
* 永远不会匹配失败 可以出现任意多次 即使没有
{} 重复次数 {1,5} [1,5]闭区间
占有量词 数量词? + * {}后加+ 如X?+ 不会回溯 效率高一点
懒惰匹配 ? 如X?? 默认为贪心 都有回溯
\d [0-9] \D 取非
\w [a-zA-Z0-9] \W
\s [.\f\n\r\t\v] 空白字符
\b 单词边界
/i 不区分大小写
/s /m 单行匹配 多行匹配
2 反向引用
([ab])\1 如果分组中匹配成功 将捕获匹配的内容替代\1
3 零宽断言
(?<=<a>)\w+(?=</a>)
<a>cat</a>
(?<=<a>)会匹配到<a> 然后从下一个位置c开始匹配\w+
(?=</a>)会匹配到</a> 然后在t结束
得到的结果就是cat
如果在不支持断言的情况
(<br>)(\w+)(?=</br>)
将得到<br>和cat
<经典表达式经典实例><精通正则表达式> 两本一起看比较好