正则表达式之匹配不存在特定字符的字符串
作为⼀名不经常使⽤正则表达式的程序员,想⽤最简单的语⾔来描述否定匹配,不过发现确实不是那么好理解。还是按照⾃⼰知道的来描述吧。正则规则描述
[ ] :表⽰范围,匹配其中任何⼀个
{ }:表⽰重复匹配多次。
( ): 表⽰分组,意思就是括号内是⼀个整体。
关于匹配
(?:pattern)
⾮获取匹配,匹配pattern但不获取匹配结果,不进⾏存储供以后使⽤。这在使⽤或字符“(|)”来组合⼀个模式的各个部分是很有⽤。例>>如“industr(?:y|ies)”就是⼀个⽐“industry|industries”更简略的表达式。
正则表达式获取括号内容(?=pattern)
⾮获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查字符串,该匹配不需要获取供
以后使⽤。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹
配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在⼀个匹配发⽣后,在最后⼀次匹配之后⽴即开始下⼀次匹配的搜索,⽽不是从包含预查的字符之后开始。
(?!pattern)
⾮获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查字符串,该匹配不需要获取供以后使⽤。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
(?<=pattern)
⾮获取匹配,反向肯定预查,与正向肯定预查类似,只是⽅向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pa tter n)
⾮获取匹配,反向否定预查,与正向否定预查类似,只是⽅向相反。例如“(?<!95|98|NT|2000)Window
s”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。这个地⽅不正确,有问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论