当前位置:Gxlcms > PHP教程 > 正则:分组问题

正则:分组问题

时间:2021-07-01 10:21:17 帮助过:7人阅读

数据

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

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

    匹配结果


    正则2:

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

    匹配结果

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

    回复内容:

    数据

  • 走进临沂
  • 城市名片
  • 投资优势
  • 支柱产业
  • 县域经济
  • 投资服务
  • 正则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.
    参考:Escape sequences

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

    人气教程排行