使用されている区切り記号と修飾子に関係なく、有効な PCRE パターンの区切り記号の間のテキストに一致する PCRE パターンを探しています。
質問する
120 次
1 に答える
2
私が知る限り、4 つのペアの区切り文字があります: ()
, []
, . その他の許可された文字はすべて 2 回使用されます。ドキュメントによると、英数字、空白、バックスラッシュ以外の文字を使用できます。したがって、このパターンは機能するはずです:{}
<>
/
^
(?=([^a-zA-Z0-9\s\\\\])) # make sure the pattern begins with a valid delimiter
# and capture it into group 1
(?| # alternation for different delimiter types
# each alternative captures the pattern into group 2
\((.*)\) # handle (...)
|
\[(.*)\] # handle [...]
|
\{(.*)\} # handle {...}
|
<(.*)> # handle <...>
|
.(.*)\1 # handle all other delimiters with a backreference
)
[imsxeADSUXu]* # allow for modifiers
$
/xs
これを使う$pattern
と
preg_match($pattern, $input, $matches);
次に、目的の結果が で見つかります$matches[2]
。
もちろん、これは一連の無効なパターンを受け入れます。これは、区切り文字がパターン内のどこかにすぐに現れないことを保証しないためです。
于 2013-08-15T15:44:15.257 に答える