如何使用RegEx匹配方括号文字?

aal*_*aap 19 php regex string

什么是匹配方括号的正则表达式?我正在使用\\]一个模式eregi_replace,但它似乎无法找到]...

Mic*_*rdt 29

\]是正确的,但请注意PHP本身也\具有转义字符,因此您可能必须使用\\[(或不同类型的字符串文字).


Bom*_*mbe 6

完美无瑕:

<?php
    $hay = "ab]cd";
    echo eregi_replace("\]", "e", $hay);
?>
Run Code Online (Sandbox Code Playgroud)

输出:

abecd
Run Code Online (Sandbox Code Playgroud)


Bra*_*ert 5

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

/ [\]] /x;

/  \]  /x;
Run Code Online (Sandbox Code Playgroud)

虽然您可能认为后者是更好的选择,但实际上我会考虑在更简单的正则表达式中使用它。我会考虑前者,对于较大的正则表达式来说是更好的选择。考虑以下:

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

/ (\w*) ( \d | \] ) /x;
Run Code Online (Sandbox Code Playgroud)

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

注意:这是 Perl 语法,部分是为了确保正确突出显示。
在 PHP 中,您可能需要将反斜杠加倍。 "[\\]]""\\]"