php - 正则:分组问题
PHP中文网
PHP中文网 2017-04-10 14:44:00
[PHP讨论组]

数据

  • 走进临沂
  • 城市名片
  • 投资优势
  • 支柱产业
  • 县域经济
  • 投资服务
  • 正则1:

    (?<=href=(\"|'))([^\"']*)(?=(\1))
    

    匹配结果


    正则2:

    (?<=href=(\"|'))([^(\1)]*)(?=(\1))
    
    

    匹配结果

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

    PHP中文网
    PHP中文网

    认证0级讲师

    全部回复(1)
    怪我咯

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

    ------------------

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

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

    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号