Pre-Search on regular expression

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

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

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

反向预搜索: "(?<=xxxxx)" , "(?

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

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