首页 > 代码库 > 正则表达式小记--匹配但不获取

正则表达式小记--匹配但不获取

(?!=XXX[:|:|\s]?)\d{16}
(?!=XXX)表示查找XXX内容,但最终结果不包括它
(?=XXX)表示查找XXX内容,最终结果包括它
[:|:|\s]? 表示 全角冒号,半角冒号,空格 或没有字符

(pattern) 匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 
Matches 集合得到,在VBScript 中使用 SubMatches 集合,在
Visual Basic Scripting Edition 中则使用 $0…$9 属性。要
匹配圆括号字符,请使用 ‘\(‘ 或 ‘\)‘。

(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹
配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合
一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就
是一个比 ‘industry|industries‘ 更简略的表达式。
(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符
串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后
使用。例如,‘Windows (?=95|98|NT|2000)‘ 能匹配"Windows 
2000"中的"Windows",但不能匹配"Windows3 .1"中"Windows"。
预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹
配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之
后开始。 
<!--
以上这2个,(?:pattern) (pattern)
好像是(?!=pattern)才达到 匹配 pattern 但不获取匹配结果 的效果 2007-4-9
-->


(?!pattern) 负向预查,在任何不匹配Negative lookahead matches the 
search string at any point where a string not matching 
pattern 的字符串开始处匹配查找字符串。这是一个非获取匹
配,也就是说,该匹配不需要获取供以后使用。例如‘Windows
(?!95|98|NT|2000)‘ 能匹配 "Windows 3.1" 中的 "Windows",
但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字
符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开
始下一次匹配的搜索,而不是从包含预查的字符之后开始 

正则表达式小记--匹配但不获取