パターン区切り文字に4組のASCIIブラケットタイプのいずれかを使用する場合は、対角の括弧で囲まれたをパターン内でエスケープする必要があります。これはまさに大括弧を使用する目的全体です。あなたは、多くの場合、人々はPerlコードでm{…}
またはqr{…}
を使用する参照理由を特に使用し、複数行のパターンのために、だ
Non-bracketing delimiters use the same character fore and aft,
but the four sorts of brackets (round, angle, square, curly)
will all nest, which means that
q{foo{bar}baz}
is the same as
'foo{bar}baz'
Note, however, that this does not always work for quoting Perl code:
$s = q{ if($a eq "}") ... }; # WRONG
:これは一部に読み込み、「引用と引用のような演算子」、下perlopを manページに記載されています/x
ᴀᴋᴀ(?x)
です。例:
return qr{
(?= # pure lookahead for conjunctive matching
\A # always from start
. *? # going only as far as we need to to find the pattern
(?:
${case_flag}
${left_boundary}
${positive_pattern}
${right_boundary}
)
)
}sxm;
これらのネストされた中括弧には問題はありません。
http://perldoc.perl.org/perlre.html - "その他の文脈で中括弧が現れた場合、それは通常の文字として扱われます。" – binaryLV
それは今のところよく似ています。最初と最後の括弧のみが考慮された場合。 phpは一つの文字列で検索と置換を行う必要はなく、一つの関数の二つの異なる引数であるので、エスケープされていないものの中にすべてを残しておいても問題ありません。 –
@binaryLV:私の答えでは完全に網羅的ではありませんでしたが、「これは期待される行動です」と逃げていました。しかし、参考のためにありがとう。 –