ホームページ  >  記事  >  バックエンド開発  >  ネストされた繰り返しを含む正規表現

ネストされた繰り返しを含む正規表現

王林
王林転載
2024-02-08 21:20:301214ブラウズ

ネストされた繰り返しを含む正規表現

この記事では、PHP エディターの Xiaoxin が、ネストされた繰り返しを含む正規表現を紹介します。正規表現は、文字列の検索、置換、検証に使用できる強力な文字列一致ツールです。ネストされた繰り返しとは、正規表現で 1 つ以上の繰り返しパターンを使用することを指し、これらの繰り返しパターンは他のパターンでネストできます。この手法は、HTML タグ、入れ子になった括弧などの階層構造とテキストを照合するために使用できます。ネストされた繰り返し正規表現の構文と使用法を理解することで、さまざまな複雑な文字列一致のニーズをより柔軟に処理できるようになります。

質問の内容

Go で、スペースで区切られた最大 50 個の単語に一致する正規表現を作成しようとしています。各単語は 1 ~ 32 個の「a」です。 次の正規表現を使用しています

リーリー

次のエラーが表示されます

リーリー

このように、最大​​ 31 回まで繰り返すことができることに気付きました。 リーリー

https://go.dev/play/p/rlnrox9-57_mを参照してください

解決策

Go の

regexp エンジンには 制限最上層と内部リピートの組み合わせは、最も内側のリピート部分のコピーが 1000 を超えてはなりません。これは、re2 文法仕様に記載されています。

あなたの場合、内側の 32 * 外側の 31 = 992 であるため、最大 31 が有効です。 32 * 32 = 1024 および 32 * 50 = 1600 は、その制限を超えると機能しません。

解決策は、式を複数の部分に分割することです:

^(a{1,32}\s?){1,31}(a{1,32}\s?){0, 19} $

以上がネストされた繰り返しを含む正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。