【正则表达式】前瞻,后顾,负前瞻,负后顾举个例⼦:
有个字符串
str = "博客园顾客博客客园"
正则匹配公司名称我们想匹配字符串⾥"博客园"的"客"字⽽不要其他的"客"字,这时就需要⽤到前瞻后顾。
正则表达式如下:
(?<=博)客(?=园)
反过来,我们不想要"博客园"的"客"字,但是想要其他"客"字。这时就要⽤到负前瞻,负后顾
正则表达式如下:
(?<!博)客(?!园)
总结⼀下:
前瞻: exp1(?=exp2)    查exp2前⾯的exp1
后顾:  (?<=exp2)exp1  查exp2后⾯的exp1
负前瞻:  exp1(?=exp2)    查后⾯不是exp2的exp1
负后顾:  (?<=exp2)exp1  查前⾯不是exp2的exp1
可以发现,负前瞻、负后顾就是把前瞻、后顾中的"="改成了"!"
注意:后顾功能在⼤多数语⾔中有长度限制,只能使⽤定长的表达式,像\w+和\d 这样的表达式长度可变,不能⽤在后顾中
⼀个复杂⼀点的例⼦:
str = "data: '|12 34 56 78 90|', data: '|12|3456|7890|', data: '|12|', data: '1234567890', data: '|1234|'  "
我们要匹配data后⾯有||的部分,要求⾥⾯没有空格没有|并且长度⼤于2
(?<=data: ')\|[^ \|]{2,}?\|(?=')
可以匹配到 |1234|

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。