正则表达式随笔

来源:互联网 发布:单片机协议栈开发 编辑:程序博客网 时间:2024/06/02 03:01

学正则表达式也有一段时间了,可能做爬虫那段时间用的比较多,现在再看perl的时候看到了一些想起正则表达式的东西。随笔记录下来,这个地方也是有很多人容易搞混淆的地方。
1 []

[]意味着匹配一组字符中的一个,如/a[0123456789]c/将匹配a加数字加c的字符串。与+联合使用例:/d[eE]+f/匹配def、dEf、deef、dEdf、dEEEeeeEef等。

2 ^
这里先说一下,^在[]里面的时候表非,否则就表示开头。
^表示除其之外的所有字符
更多的时候,很多人会不理解 q[^abcd]q是什么意思.
总之,就是——不与 abcd 之中的任意一个字符匹配 .

  1. 到底是匹配q 和q之间非a

  2. 还是匹配q和q之间非a非b非c非d任何一个

结果是后者 ,匹配这之中的任何一个,并且q和q之间只能有一个字符.
如果是多个字符,请加上+,即 q[^abcd]+q,
即:
q[^abcd]q只能匹配 qwq,qeq之类。
q[^abcd]+q能匹配 qzczxzxzxzx…..q 都行
这里要注意+ 表示:(表示匹配一次或者多次,其中不能包含abcd,qq不成立)
如果换成* 表示:(0个或者多个,即qq也成立)。

OK,下次什么时候写一下也是困扰很多人的关于正则表达式的贪婪匹配和非贪婪匹配的问题。

0 0
原创粉丝点击