正则:分组问题
数据
<li><a href='/html/zjly/'>走进临沂</a></li><li><a href='/html/csmp/'>城市名片</a></li>
<li><a href='/html/tzys/'>投资优势</a></li>
<li><a href='/html/zzcy/'>支柱产业</a></li>
<li><a href='/html/xyjj/'>县域经济</a></li>
<li><a href='/html/tzfw/'>投资服务</a></li>
正则1:
(?<=href=(\"|'))([^\"']*)(?=(\1))
匹配结果
正则2:
(?<=href=(\"|'))([^(\1)]*)(?=(\1))
匹配结果
问题
正则1和正则2只有中间的(\1)
和\"'
,按我的理解,此时的分组结果:\1
要吗是"或',此时的正则表达式2((?<=href=(\"|'))([^(\1)]*)(?=(\1))
)应该能够正常匹配url才对,而结果却不是这样的(如第2图所示)
回答:
([^(\1)]*)
的问题在于方括号里面不能使用编号...
------------------
补充: \1
在方括号是没有后向引用的作用的. \1
在方括号中代表的意思是ctrl-a
,16进制的\x01
.就如\11
匹配的是tab
.
还有, \1
如果有反向引用的作用,就有可能与 []是针对字符集里的单个字符为单位进行匹配
这个规则冲突.所以,\1
在[]
没有反向引用的作用.
以上是 正则:分组问题 的全部内容, 来源链接: utcz.com/a/159701.html