代码之家  ›  专栏  ›  技术社区  ›  Gracie williams

Php从中心匹配

  •  1
  • Gracie williams  · 技术社区  · 7 年前

    我有如下字符串:

    <a href="test1.com">test1</a><a href="test2.com">test2</a>
    

    我的正则表达式如下:

    <a href=(.*?)test2.com(.*?)<\/a>
    

    和我的php代码:

    preg_match('/<a href=(.*?)test2.com(.*?)<\/a>/s',$game,$mat);
    

    所以我想匹配这整件事 <a href="test2.com">test2</a> ,而是从 <a href 我得到以下信息:

    <a href=“test1.com”>测试1</a><a href=“test2.com”>测试2</a>
    

    如何匹配 test2.com 并匹配到第一个左和第一个右出现。

    1 回复  |  直到 7 年前
        1
  •  2
  •   mrzasa    7 年前

    使用

    <a href=([^<]*)test2.com([^<]*)<\/a>
    

    Demo

    使用 [^<] 而不是 .*? 确保重复仅将文本匹配到下一个html标记(从 < ).具有否定类的贪婪运算符也比具有点的懒惰运算符快。