开发者社区> 问答> 正文

php正则:分组问题

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

展开
收起
落地花开啦 2016-06-17 16:58:59 2073 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

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

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

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

    2019-07-17 19:43:08
    赞同 展开评论 打赏
问答分类:
PHP
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载