4

私の PHP スクリプトは Freebase API を呼び出して、任意の数の開きかっこと閉じかっこを含む文字列を出力します。開いてから閉じたブラケットの各セットには、開いてから閉じたブラケット自体をいくつでも含めることができます。例えば;

$string = "random string blah (a) (b) blah blah (brackets (within) brackets) blah";

PHP と正規表現を使用して文字列を操作すると、括弧の内容や括弧自体が含まれない出力が得られます。例えば;

$string = "random string blah blah blah blah";
4

1 に答える 1

9

再帰的な正規表現を使用できます。

$result = preg_replace('/\(([^()]*+|(?R))*\)\s*/', '', $subject);

説明:

\(       # Match (
(        # Match the following group:
 [^()]*+ # Either any number of non-parentheses (possessive match)
|        # or
 (?R)    # a (recursive) match of the current regex
)*       # Repeat as needed
\)       # Match )
\s*      # Match optional trailing whitespace
于 2013-08-10T17:45:01.240 に答える