正则表达式练习笔记
来源:互联网 发布:穿越还珠之知画txt下载 编辑:程序博客网 时间:2024/05/17 07:14
看到[ ] 字符组(Character Classes) 这节,最后的例子,突然想到,如何来匹配不包含“abc”子字符串的字符串。写来写去,还就是写不出来,照猫画虎,写了个^.*(?!abc).*(?!abc)$,看起来应该可以,跑出来不是那么回事。对于如下的输入:
abcklkjlkjk
lkjljalkl
kjlkabclk
lkjlkjlabc
kljkla
kljkljlj
可以判读出"abcklkjlkjk"和"lkjlkjlabc",但对于"kjlkabclk"这种子字符串在中间的情况,就不能解决。想着用个逆序否定,^.*(?!abc).*(?<!abc)(?!abc)$,结果还是一样。
最后,在这里使用正则表达式找出不包含特定字符串的条目找到了解决方法:
当正则引擎解析到A区域的时候,就已经开始执行B区域的前瞻工作。这个时候发现当A区域为Null的时候匹配成功——.*本来就允许匹配空字符,前瞻条件又满足,A区域后面紧跟着的是“lkj”字符串,而并不是abc。因此整个匹配过程成功匹配到所有条目。
于是,要把开头的.*移到否定表达式里面,变成^(?!.*abc).*(?!abc)$,就可以了,优化一下就是^(?!.*abc).*$,因为(?!.*abc)已经包括了开头为任意字符,后面跟着abc的情况。
看的时候觉得差不多明白,要用的时候才发现,解决不了多少问题,还需要多练习啊。
- 正则表达式练习笔记
- 正则表达式练习笔记
- 正则表达式学习笔记3-练习
- 正则表达式练习器
- 正则表达式练习器
- javascript正则表达式练习
- awk练习-正则表达式
- 正则表达式练习
- java正则表达式练习
- Python正则表达式练习
- 正则表达式练习
- 正则表达式练习
- 正则表达式(练习)
- java正则表达式练习
- python 正则表达式练习
- 正则表达式练习
- java 正则表达式 练习
- 简单正则表达式练习
- IoMarkIrpPending的使用
- 文件操作:CreateFile和WriteFile的学习
- android telephony(三)
- 我的第一篇日志
- 在XCode中实现多语言环境支持
- 正则表达式练习笔记
- 【转帖】PSP ISO文件LBA保护分析 by Elysion
- flex exam
- 表数据和索引数据分开独立表空间存储优点
- 差别怎么这么大呐?
- 八 java面向对象程序设计(构造方法)
- 手工建立数据库
- 【破解心得】DXT结构软解码操作[psp平台]
- 面试英语技巧