环视
来源:互联网 发布:怎样给淘宝刷好评 编辑:程序博客网 时间:2024/05/21 17:19
-- Start
假设让你在一个文件中查找一下 u 后面不是 x 的单词,怎么办? 一个很自然的想法是用下面的正则表达式来查找:
u[^x]
不过遗憾的是,你很可能漏掉了部分单词,啊? 是吗? 我怎么没看出问题来呢? 到底会漏掉什么样的单词呢? 呵呵,如果 you 这个单词出现在一行的末尾,试一试,你还能用这个表达式搜索出来吗? 记住排除型字符组的意思是匹配一个未列出的字符,而不是不要匹配列出的字符。
那么正确的做法是什么呢? 试一试下面的表达式吧。
u(?!x)
这个表达式是什么意思呢?它的意思是匹配字母 u, 且 u 的右边不是 x。那我想查找 u 后面是 x 的单词该怎么办呢?试一试下面的表达式吧:
u(?=x)
那我想查找 u 前面是 x 的单词该怎么办呢?试一试下面的表达式吧:
(?<=x)u
那我想查找 u 前面不是 x 的单词该怎么办呢?试一试下面的表达式吧:
(?<!x)u
呵呵,是不是有点糊涂啊。再看一遍。我们把这四个元字符称为环视(lookaround),它们和我们之前学过的单词分界符,行的起始和结束符一样,它们只匹配位置,而不匹配具体的字符,了解这一点很重要。恭喜你,你又学会了四个非常强悍的正则表达式元字符。
元字符名称匹配对象.点号(dot)单个任意字符[...]字符组(Character Class)列出的任意字符[^...]排除型字符组(Negated Character Class)未列出的任意字符^脱字符(caret)行的起始位置$美元符(dollar)行的结束位置\< 单词的起始位置\> 单词的结束位置\bBoundary单词边界\B 非单词边界(?=...)肯定顺序环视(Positive Lookahead)成功如果右边能够匹配(?!...)否定顺序环视(Negative Lookahead)成功如果右边不能够匹配(?<=...)肯定逆序环视(Positive Lookbehind)成功如果左边能够匹配(?<!...)否定逆序环视(Negative Lookbehind)成功如果左边不能够匹配|竖线(bar)匹配分割两边的任意一个表达式
---更多参见:正则表达式精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-12
-- Written by ShangBo on 2012-04-21
-- End
- 环视
- vim 环视
- 环视匹配
- 环视lookaround
- 正则环视
- 正则基础之--环视
- 正则逆序环视探索
- javascript RegExp 环视
- 全景鸟瞰环视
- 正则之环视
- 正则表达式之环视
- 正则表达式环视否定例子
- vim 正则表达式之环视
- 正则表达式——环视
- 简析正则中的环视
- 正则表达式之环视(lookaround)
- 巧解正则表达式环视
- IMX6+MAX9286高清环视
- 深刻理解Linux进程间通信(IPC)
- java中String类详解(享元模式思考)
- 区分Activity的四种加载模式
- Android 对话框(Dialog)大全 建立你自己的对话框
- init.rc 引用到的setprop意义(Android系统中setprop,getprop,watchprops命令的使用 )
- 环视
- CentOS6.2+LAMP环境搭建
- vs 2010各安装项解释
- c++ 虚函数的实现机制
- tomcat启动45秒问题
- 生活常识之早起
- N8:自己动手给vim语法增色
- 也谈C++中char*与wchar_t*之间的转换
- 浅谈用VC6.0单文档进行数字图像处理(1)