?<=pattern 后向肯定到底如何使用
看了看书上的例子,理解的不深,有了解的朋友说一下具体的用法,最好有个例子,谢谢 :D去看环视主要是体现一个位置关系
http:##unmi.cc#regexlookaround# 回复 2# 银风冷月
在详细点说一下呗,来个例子
例子:123456abc78
这里主要说的是一个位置,1前面的位置为0,1和2中间的位置为1,以此类推
表达式:(?<=\d)\d+
这个会匹配什么呢?
(?<=pattern)此式子是顺序肯定,即从左往右的位置来表示0位置之前非数字即\d,所以表达式执行失败,后续的\d+不执行,位置+1,位置1之前是数字1,表达式成立,执行\d+,匹配后续的数字,直到位置7,前方是数字6,表达式(?<=\d)返回True,执行\d+,但是其后并非数字,匹配失败,继续回头执行(?<=\d),数字7前方的位置10,前方是字母c,表达式整体是False不输出7,位置11前方是数字7,\d+也匹配8故输出8
最后匹配的是23456 8
:roll: 语言表达能力不行,将就看下吧 本帖最后由 HH106 于 2014-12-12 11:10 编辑
预搜索,匹配一个位置AB
正则:(?<=A).*?+(?=])意思就是A之后,]之前这二个位置,但结果中不包括A与]
这个匹配AB 中的,而不匹配B后的 ?=pattern为前向肯定用法:(xxxx)(?=pattern) 只有(?=pattern)匹配的情况下,才会去匹配(xxxx)
?<=pattern为后向肯定 用法 (?<=pattern)(xxxx)只有(?<=pattern)匹配的情况下,才会去匹配(xxxx),匹配的结果不捕获(?<=pattern)这段
楼上的两位,我这么理解对吗? 回复 7# super皮波
基本正确,有些小问题,正则表达式是顺序从左向右匹配
回复 7# super皮波
(xxxx)(?=pattern) 这个表达式是(xxxx)可以匹配了,然后看(?=pattern)是否正确,如果整个式子是True,才会返回(xxxx)
例子:1234abc56
正则:\d(?=\d)
这里匹配的是123 5
就是因为位置原因,先匹配到数字1,位置是1,而位置1后面的是数字2,符合(?=\d),故匹配1;\d匹配数字4,4的后方是字母a不符合(?=\d)故不输出;数字6的位置是9,位置9后面是空,故不输出6 多谢楼上的几位朋友
页:
[1]