貪欲な量指定子、貪欲でない量指定子を含む正規表現言語について考えてみましょ、順序付けられた代替、および文字クラス。(これは本質的にPCREのサブ言語であり、後方参照、ルックアラウンドアサーション、またはその他のより洗練されたビットはありません。)∗?
文字列正規表現の一致 は、半分開いた間隔であり、は、。R s = s 0 … s n N s a 0 … s a 1 − 1 R
あるマッチを他のマッチよりも良くするものを再帰的に定義します。一致正規表現のためのの文字列には、より良い別の一致よりも場合又は、もしと:Ra 0 < b 0 a 0 = b 0
が文字クラスの場合:文字クラスには一意の一致があるため、の同じ位置にあるすべての一致は等しくなります。したがって、このケースは不可能です。R
場合:
- 先頭部分のためのよりよい一致であるの先端部よりも、又はS b
- 主要部分と等しくための良好な一致である、および末尾部分のためのよりよい一致であるの後端部よりも。
場合:
- はと一致し、は一致しない、または
- にも同様に良い一致しているとより良いマッチであるよりも、ある、または
- ために一致していないが、試合のためにある、そしてより良いマッチであるよりあります。
他のすべての構文形式は、一致の優先度のために上記の3つに削減されます。
- :
- :
これらの無限パターンは、一致優先度の目的でのみ使用されます。これらは、検討中の一致言語の一部ではありません。
「より良い」関係とは、特定のパターンのすべての一致に対して弱い線形順序です。
すべての有限入力文字列について、のペアワイズディスジョイントのベストマッチのセットがペアワイズディスジョイントのベストマッチのセットに等しい場合、2つの正規表現マッチ相当を呼び出します。
Q:貪欲でない量指定子を含むすべての正規表現に当てはまり貪欲でない量指定子を含まない、一致する正規表現ありますか?
編集:これは、質問の内容を明確にするために質問を完全に書き直したものです。
a+?
)はまだ{a ^ n:n≥1}です。(Perl などで)アンカーされていない正規表現一致を実行した場合、結果'aaaa' =~ /a+?/
は得aaaa
られませんが、ブランチがとは異なる順序で試行されるためですa+
。アンカー('aaaa' =~ /^a+?\z/
Perl など)で適切に実行するaaaa
と、結果が得られます。
//g
Perlの)グローバル正規表現一致が返すリストについて話しているのですか?
\tt
LaTeXが特殊文字と制御シーケンスを解釈することを妨げません!)