正则:分组问题
数据
<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图所示)
kendnd
11 years, 1 month ago
Answers
([^(\1)]*)
的问题在于方括号里面不能使用编号...
------------------
补充:
\1
在方括号是没有后向引用的作用的.
\1
在方括号中代表的意思是
ctrl-a
,16进制的
\x01
.就如
\11
匹配的是
tab
.
参考:
Escape sequences
还有,
\1
如果有反向引用的作用,就有可能与
[]是针对字符集里的单个字符为单位进行匹配
这个规则冲突.所以,
\1
在
[]
没有反向引用的作用.
roy0825
answered 11 years, 1 month ago