ホームページ >バックエンド開発 >PHPチュートリアル >「[^][]」正規表現コンポーネントは、ネストされた角括弧の一致においてどのように機能しますか?

「[^][]」正規表現コンポーネントは、ネストされた角括弧の一致においてどのように機能しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 07:03:02658ブラウズ

How does the

「[^][]」正規表現の意味

指定された正規表現内:

\[(?:[^][]|(?R))*\]

「[^][]」正規表現コンポーネントは、「[」または「]」を除く任意の文字に一致する文字クラスです。

文字クラスの説明

A文字クラスは、指定された文字範囲内の任意の文字と一致します。この場合、"[^]" は "] が続かないことを意味するため、"[^][]" は "]" が続かない任意の文字と実質的に一致します。

正規表現再帰

「[^][]」の括弧は非キャプチャグループを示します。グループ内では、「?R」トークンは正規表現全体への再帰参照を表します。これにより、正規表現がネストされた角括弧に一致するようになります。

エスケープ シーケンスの回避

PCRE (PHP の preg_ 関数で使用される正規表現エンジン) では、そうではないことに注意してください。文字クラス内で「[」または「]」をエスケープするために必要です。これは、「[^][]」内の「]」が文字クラスに属していることは明らかであるためです。

Inline xx Modifier (PHP 7.3 )

PHP 7.3 では、 inline xx 修飾子を使用して、文字クラス内の空白文字を無視できます。これにより、次のような曖昧さの少ないクラスを作成できるようになります。

(?xx) [^ ][ ]     [ ] ]      [ [ ]      [^ [ ]

互換性と互換性

「[^][]」構文は、ほとんどの正規表現と互換性があります。 、PCRE、Perl、Python、Java などが含まれます。ただし、Ruby および JavaScript では認識されません (古いバージョンの Internet Explorer を除く)。

ネストされた角括弧の一致

サンプル正規表現のコンテキストでは、 "[^][]" は、バランスの取れた角括弧が一致することを保証し、ネストされた角括弧の一致を可能にします。

補足事項

  • "[^ [^]" は、その後に "]" が続かない文字と一致するため、"]" は明確です。そのため、後続の "]" は文字クラスに属します。
  • 最新の JavaScript ブラウザは通常、" を定義する ECMA 仕様に従います。 []" は、常に一致しない正規表現トークンとして使用されます。
  • 提供された最適化された正規表現 "([[^][](?:(?-1)[^][] )* ])" は、不必要な変更を回避することでパフォーマンスを向上させます。

以上が「[^][]」正規表現コンポーネントは、ネストされた角括弧の一致においてどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。