关于 预搜索

由于工作需要看了一下正则表达式的预搜索。

 

预搜索分为正向预搜索和反向预搜索。

 

正向预搜索: "(?=xxxxx)" "(?!xxxxx)"

格式: "(?=xxxxx)" ,在被匹配的字符串中,它对所处的 " 缝隙 " 或者 " 两头 " 附加的条件是:所在缝隙的右侧,必须能够匹配上 xxxxx 这部分的表达式。因为它只是在此作为这个缝隙上附加的条件,所以它并不影响后边的表达式去真正匹配这个缝隙之后的字符。这就类似 "\b" ,本身不匹配任何字符。 "\b" 只是将所在缝隙之前、之后的字符取来进行了一下判断,不会影响后边的表达式来真正的匹配。

 

举例 :表达式 "Windows (?=NT|XP)" 在匹配 "Windows 98, Windows NT, Windows 2000" ,将只匹配 "Windows NT" 中的 "Windows " ,其他的 "Windows " 字样则不被匹配。

 

 

反向预搜索: "(?<=xxxxx)" "(?<!xxxxx)"
这两种格式的概念和正向预搜索是类似的,反向预搜索要求的条件是:所在缝隙的 " 左侧 " ,两种格式分别要求必须能够匹配和必须不能够匹配指定表达式,而不是去判断右侧。与 " 正向预搜索 " 一样的是:它们都是对所在缝隙的一种附加条件,本身都不匹配任何字符。

举例 :表达式 "(?<=\d{4})\d+(?=\d{4})" 在匹配 "1234567890123456" 时,将匹配除了前 4 个数字和后 4 个数字之外的中间 8 个数字。

 

由于 JScript.RegExp 不支持反向预搜索,因此,本条举例不能够进行演示。很多其他的引擎可以支持反向预搜索,比如: Java 1.4 以上的 java.util.regex 包.

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值