匹配优先可能遇到的问题
2017-09-13 15:52
260 查看
简单的问题
其实在精通正则表达式六:匹配优先与忽略优先中已经看到了匹配优先的问题,比如我想匹配一段文本中引号中的内容,用匹配优先就会出现问题:原本希望匹配的是”Welcome”和”hosted”,然而却得到了错误的结果,上篇文章已经写过,这里就不多加赘述。
现在来说说如何解决这个问题,首先可以用忽略优先量词:
还可以用排除型字符组:
用排除法时注意,‘^’只要用在‘[]’的里面才是排除,且要放在第一个。但有时候使用排除型字符组也会遇到一些问题,因为在大多数流派中‘[^”]’可以匹配换行符:
如果不想让表达式匹配换行符,可以用‘[^”\n]’:
但是‘.’不会匹配换行符,所以用忽略优先量词是没问题的。
复杂点的问题
如果在匹配HTML的文本时要获取标签里的内容,比如<B>Billions</B> and <B> Zillions</B> of ...
我需要匹配
<B>和</B>之间的内容。
首先肯定不能用排除型字符组,因为这些标签肯定不是单个字符,而排除型字符组里面的每个字符之间是或关系。这时可以用忽略优先量词:
注意‘<\/B>’中的‘\’是转义用的。
但忽略优先量词有时候也会出问题,比如现在要匹配这个:
<B>Billions and <B> Zillions</B> of ...
所以忽略优先量词并不能完美替代排除类,上面的例子也会出现这个问题:
回到现在的例子,现在即不能用忽略优先量词,有不能用排除型字符组,该如何解决这一类问题呢?用否定环视!
这时候不管是用匹配优先量词还是忽略优先量词都可以。
相关文章推荐
- 使用Sqoop将数据从Hive导入MySQL可能遇到的问题
- [转]演示过程可能遇到的问题和应急预案
- NodeJs回调可能遇到的问题
- android Notification分析——你可能遇到的各种问题
- 安装server 2003和xp可能遇到的问题
- Win10 下使用 VS2008 开发 WinCE 应用可能遇到的问题(2)
- codeblocks编译遇到问题的可能解决办法
- C 调用 fortran 可能遇到的问题
- wpa_supplicant的移植和可能遇到的问题
- 硬盘安装Centos7可能遇到的一些问题
- eclipse和JDK安装中可能遇到的问题
- jsonp跨域请求可能遇到的问题
- 用JS判断浏览器是否是IE9以下,处理可能遇到的兼容性问题,或者给出浏览器版本过低的升级提醒。
- 【JS】关于表单提交前验证的方法和可能遇到的问题总结
- 姜老师的豆知识——box2d中DestroyBody时可能遇到的问题
- nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交
- 一些面试时候可能遇到的问题
- 基于WINAVR + avr studio 4 使用外部晶振时及延时可能遇到的问题( By-炬本)
- ubuntu 安装 VMware9.0.1可能遇到的问题
- IG NZT 安装使用过程中可能遇到的问题解决办法