0

使用されている区切り記号と修飾子に関係なく、有効な PCRE パターン区切り記号の間のテキストに一致する PCRE パターンを探しています。

4

1 に答える 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 に答える