2

ほとんどの言語では、固定長または有限長の後読みが許可されています。注目すべき例外の 1 つは .NET で、* 演算子を使用できます。

ただし、.NET 正規表現は、通常の言語ではない名前付きキャプチャを使用して、バランスの取れた括弧を既に認識できます。後読みで*を使用した正規表現はまだ定期的ですか? * 以外の部分式に対する拡張回答 (たとえば、追加のルックアラウンド!) も歓迎します。

tl;dr: 後読みで * を使用しても、正規表現は正常に機能しますか?

4

3 に答える 3

1

私はここで答えを信じています:ルックアラウンドは、正規表現で照合できる言語に影響しますか? 後読みに * を追加しても (またはそのような後読みや先読みをネストしても)、式の「規則性」に影響しないことを証明するために拡張できます。とはいえ、それ以上考えたことはありません。

それが役立つことを願っています!

于 2010-08-02T16:33:19.967 に答える
0

正規表現は交差の下で閉じられます。新しいシンボル & を追加し、後読みを書き直します: A(?<B)C を (?:AC&.*BC) と書き直すと、後読みが規則的であることがわかります。

Bには、A / Cの境界を超えないものを明確に使用できます。つまり、先読み以外のすべてです。後読みが先読みを使用する可能性がある場合、またはその逆の場合はどうなりますか? .*BC の作業を開始します。あなたはまだ元気です。

したがって、正規表現は実際には交差と無限長のルックアラウンド (任意の深さへのより多くのルックアラウンドを含めることができます) を追加することができ、それでも同様に効率的です。

于 2010-07-29T13:01:50.073 に答える
0

.NET の制限のない後読みは、既に標準的ではない機能を改良したにすぎません。固定、有限、または無限の後読みは、通常の文法には存在しません。また、先読み、キャプチャ グループ、後方参照、消極的な量指定子、所有量指定子、アトミック グループ、条件、単語境界、アンカーなども使用できません。

理論的に純粋な正規表現に限定しなければならない場合、現在の正規表現ユーザーの 99.9% はそれらを使用できなくなります。機能が「通常」かどうかを尋ねるのは息の無駄です。それは役に立ちますか?それは重要なことのすべてです。

于 2010-07-29T00:39:16.517 に答える