php正则:分组问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

php正则:分组问题

落地花开啦 2016-06-17 16:58:59 1056

数据
screenshot
正则1:
(?<=href=(\"|'))([^\"']*)(?=(\1))
匹配结果
screenshot
正则2:
(?<=href=(\"|'))([^(\1)]*)(?=(\1))
匹配结果
screenshot
问题
正则1和正则2只有中间的(1)和"',按我的理解,此时的分组结果:1要吗是"或',此时的正则表达式2((?<=href=(\"|'))([^(\1)]*)(?=(\1)))应该能够正常匹配url才对,而结果却不是这样的(如第2图所示)

PHP
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:43:08

    ([^(\1)]*)的问题在于方括号里面不能使用编号...

    补充: 1在方括号是没有后向引用的作用的. 1在方括号中代表的意思是ctrl-a,16进制的x01.就如11匹配的是tab.
    参考:Escape sequences

    还有, 1如果有反向引用的作用,就有可能与 []是针对字符集里的单个字符为单位进行匹配这个规则冲突.所以,1在[]没有反向引用的作用.

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程