タグ付けされた質問 「nested-reference」

3
どのようにしてa ^ nb ^ nをJava正規表現と一致させることができますか?
これは一連の教育的正規表現の記事の第2部です。これは、先読みとネストされた参照を使用して、非正規言語a n b nと一致させる方法を示しています。入れ子になった参照は最初に紹介されています:この正規表現はどのようにして三角形の数を見つけますか? 典型的な非正規言語の 1つは次のとおりです。 L = { an bn: n > 0 } これは、いくつかaのの後に同じ数のが続く空でないすべての文字列の言語ですb。この言語の文字列の例はab、aabb、aaabbb。 この言語は、ポンプの補題によって非規則的であることを示すことができます。これは実際には、文脈自由文法によって生成できる典型的な文脈自由言語です。 S → aSb | ab それにもかかわらず、現代の正規表現の実装は、通常の言語だけではなく、それ以上のものを明確に認識します。つまり、それらは正式な言語理論の定義では「通常」ではありません。PCREとPerlは再帰正規表現をサポートし、.NETはバランスグループ定義をサポートします。「後方参照マッチング」などの「ファンシー」機能がさらに少ないということは、正規表現が規則的でないことを意味します。 しかし、この「基本」機能はどれほど強力なのでしょうか。Lたとえば、Java regexで認識できますか?我々は、おそらく前後参照とネストされた参照を組み合わせて、例えばで動作パターン持つことができるString.matchesような文字列と一致するようにab、aabb、aaabbbなど、? 参考文献 perlfaq6:Perl正規表現を使用してバランスの取れたテキストを照合できますか? MSDN-正規表現言語要素-グループ定義のバランス pcre.org-PCREのマニュアルページ regular - expressions.info-ルックアラウンドとグループ化および後方参照 java.util.regex.Pattern リンクされた質問 ルックアラウンドは、正規表現で照合できる言語に影響しますか? .NET正規表現バランシンググループとPCRE再帰パターン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.