ホームページ >バックエンド開発 >PHPチュートリアル >正規表現で可変長の後読みアサーションを実現するにはどうすればよいですか?

正規表現で可変長の後読みアサーションを実現するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 04:25:02412ブラウズ

How Can I Achieve Variable-Length Lookbehind Assertions in Regular Expressions?

正規表現の可変長後読みアサーション

正規表現は強力なパターン マッチング ツールですが、変数に関しては制限される可能性があります-length 後読みアサーション。後読みアサーションを使用すると、一致の前の条件に基づいて文字列を一致させることができます。ただし、従来の正規表現は、固定長の後読みアサーションのみをサポートします。

可変長の後読みアサーションの代替

可変長の後読みアサーションを実行する必要がある場合は、次の方法があります。いくつかの代替手段があります:

  1. Python の正規表現モジュール: Python の正規表現モジュールは、(?<=...) 構文を使用した可変長の後読みアサーションをサポートします。このモジュールは、Python の標準 re モジュールよりも高度な正規表現の実装を提供します。
  2. K 制御記号: 最新の正規表現では、K 記号を使用すると、一致する前に一致する文字を破棄できます。 Kの出来事。これは後読みアサーションに似ていますが、同じ式で 2 回使用することはできず、破棄される文字は常に行の先頭まで続きます。

K による置換

一致を置換する場合、K を使用して特定の文字を置換から除外できます。たとえば、次のコードは文字列の "bar" 部分のみを置き換えます。

s/(foo.*)\Kbar/new_text/

Negative Lookbehinds with K

Negative Lookbehinds with K

Negative Lookbehind は ^ を使用して実現できます。 (?:(?!STRING).)* 構造体。これにより、指定された文字列を含む部分文字列と一致することなく、文字列全体が効果的に一致します。

拡張された正規表現の実装

  • 一部の言語では、可変長をサポートする拡張された正規表現の実装が行われています。後読みアサーション:
  • Python の正規表現モジュール
Perl の正規表現エンジンの一部の拡張バージョン

ただし、最新の正規表現実装のすべてが可変長後読みアサーションをサポートしているわけではないことに注意することが重要です。特定の言語と実装については、ドキュメントを参照することを常にお勧めします。

以上が正規表現で可変長の後読みアサーションを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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