代码之家  ›  专栏  ›  技术社区  ›  aalaap

如何使用正则表达式匹配方括号文字?

  •  16
  • aalaap  · 技术社区  · 16 年前

    什么是正则表达式来匹配方括号?我正在使用 \\] eregi_replace ,但它似乎找不到 ] ...

    6 回复  |  直到 13 年前
        1
  •  36
  •   Stevoisiak    7 年前

    \] 是正确的,但请注意PHP本身也有 \ 作为转义字符,因此您可能必须使用 \\[ (或另一种字符串文字)。

        2
  •  8
  •   Bombe    16 年前

    完美无瑕:

    <?php
        $hay = "ab]cd";
        echo eregi_replace("\]", "e", $hay);
    ?>
    

    输出:

    abecd
    
        3
  •  4
  •   Brad Gilbert    16 年前

    有两种方法可以做到这一点:

    / [\]] /x;
    
    /  \]  /x;
    

    / (\w*) (  [\d\]] ) /x;
    
    / (\w*) ( \d | \] ) /x;
    

    在本例中,前者是我首选的解决方案。它可以更好地组合单独的实体,每个实体可能在给定位置匹配。它还可能有一些速度优势,具体取决于实现。


    "[\\]]" "\\]"

        4
  •  3
  •   PhiLho    16 年前


    使用eregi_替换和preg_替换进行测试。

    [是另一个野兽,你必须逃脱它。看起来单引号和双引号,单引号或双引号都被PHP对待,对于这两个正则表达式家族。

    也许你的问题在你表达的其他地方,你应该完整地表达出来。

        5
  •  0
  •   Thomas Hansen    16 年前

    在.Net中,通过添加反斜杠来转义特殊字符;“\”意味着它将成为;"["...

    你要么做这样的事情;

    @"\["
    

    或者类似的事情;

    "\\["
    
        6
  •  0
  •   VonC    16 年前

     '\['
    

    在里面 double quotes 不过,它可能会根据上下文工作得很好,因为 changes the way the parameter 传递给函数(简单引号只传递字符串而不进行任何解释,因此需要加倍到“\”字符)。

    这里,如果 "\[" 如果被解释为转义字符,则仍然需要将“\”加倍。

    注意:根据您的评论,您可以尝试使用正则表达式

    <\s*(?:br|p)\s*\/?\s*\>\s*\[
    

    [ <br> 或者 <p>