关于正则表达式的一些感悟

2018-06-19  本文已影响0人  KayFelicities

这两天又看了一下正则表达式的入门手册,有些原来没有注意到的东西,记录一下。

匹配类型

有些元字符只匹配位置

有些元字符只匹配数量

[]中是用来放匹配的字符的,所以匹配位置的东西在里面是无效的

比如我想匹配0:忙,1:闲中的枚举,如果我用下面的正则是无法匹配的:
([\dH]+):(.*?)[,;$]
因为$[]中表示的是字符而不是位置. 正确的写法是:
([\dH]+):(.*?)([,;]|$)

.*?的解释

.匹配任意字符,*匹配任意数量,?使用懒惰模式

后向引用

例:\b(\w+)\b\s+\1\b匹配重复的单词,像go go, 或者kitty kitty

零宽断言

断言的目的是使用字符串匹配位置但不匹配任何字符串,即被断言匹配的字符串仍然可以继续被匹配。另一种角度来说,可以用来判断字符串中是否包含某字符串(因为不会匹配任何字符串)。

例:

多行模式和单行模式并不是反义词

体会

常用正则表达式

还没搞明白的特殊匹配方法

平衡组/递归匹配

参考

https://www.jb51.net/tools/zhengze.html

上一篇 下一篇

猜你喜欢

热点阅读