匹配优先可能遇到的问题
来源:互联网 发布:socket编程例子 编辑:程序博客网 时间:2024/06/17 06:55
简单的问题
其实在精通正则表达式六:匹配优先与忽略优先中已经看到了匹配优先的问题,比如我想匹配一段文本中引号中的内容,用匹配优先就会出现问题:
原本希望匹配的是”Welcome”和”hosted”,然而却得到了错误的结果,上篇文章已经写过,这里就不多加赘述。
现在来说说如何解决这个问题,首先可以用忽略优先量词:
还可以用排除型字符组:
用排除法时注意,‘^’只要用在‘[]’的里面才是排除,且要放在第一个。但有时候使用排除型字符组也会遇到一些问题,因为在大多数流派中‘[^”]’可以匹配换行符:
如果不想让表达式匹配换行符,可以用‘[^”\n]’:
但是‘.’不会匹配换行符,所以用忽略优先量词是没问题的。
复杂点的问题
如果在匹配HTML的文本时要获取标签里的内容,比如
<B>Billions</B> and <B> Zillions</B> of ...
我需要匹配<B>和</B>
之间的内容。
首先肯定不能用排除型字符组,因为这些标签肯定不是单个字符,而排除型字符组里面的每个字符之间是或关系。这时可以用忽略优先量词:
注意‘<\/B>’中的‘\’是转义用的。
但忽略优先量词有时候也会出问题,比如现在要匹配这个:
<B>Billions and <B> Zillions</B> of ...
所以忽略优先量词并不能完美替代排除类,上面的例子也会出现这个问题:
回到现在的例子,现在即不能用忽略优先量词,有不能用排除型字符组,该如何解决这一类问题呢?用否定环视!
这时候不管是用匹配优先量词还是忽略优先量词都可以。
阅读全文
0 0
- 匹配优先可能遇到的问题
- 面试可能遇到的问题
- 将来可能遇到的问题?
- Testlink可能遇到的问题
- Hadoop可能遇到的问题
- 项目经理可能遇到的问题
- 网站制作中可能遇到的问题
- VC++中可能遇到的问题
- 面试中可能遇到的问题
- VC++中可能遇到的问题收藏
- libphp5.so可能遇到的问题(转摘)
- CE开发中可能遇到的问题
- CE开发中可能遇到的问题
- 卸载VS2008时可能遇到的问题
- http_build_query可能遇到的问题 &=>【&】
- C 调用 fortran 可能遇到的问题
- Android开发中可能遇到的问题
- CE开发中可能遇到的问题
- Jquery实现京东右侧固定层
- C#中的enum枚举类
- JAVA正则表达式 Pattern和Matcher,用正则替换对应的内容。
- Jq获取值
- Linux开发几个小技巧
- 匹配优先可能遇到的问题
- Windows 关闭防火墙命令
- unity学习——初识unity3D中的协程
- 面试题60. 把二叉树打印成多行
- 比较字符串CompareTo的用法及注意
- Windows安装npm及cnpm
- SpringBoot环境搭建和返回JSON 字符串
- linux centos7 安装jdk、tomcat、mysql、笔记
- 关于Timer定时器