5

次の数量詞は、シナリオ、速度などに関してどのように異なりますか。

  • ???および?+すべてが0回または1回一致します。
  • **? and*+`はすべて0回以上一致します。
  • ++?および++すべてが1回以上一致します。

  • ?*そして貪欲+です。
  • ??*?そして消極的/怠惰+?です。
  • ?+所有*+++です。

これらの用語の意味を理解するのを誰かが助けてくれますか?同じ仕事に対して各量指定子に3つのバリエーションがあるのはなぜですか?

4

1 に答える 1

7

文字列を取る

aaaab

次の正規表現がどのように一致するかを確認してください。

Regex          Submatches
               group 1  group 2  group3
(a?)(a*)(ab)   a        aa       ab
(a??)(a*)(ab)           aaa      ab
(a?+)(a*)(ab)  a        aa       ab
(a*)(a?)(ab)   aaa               ab
(a*?)(a?)(ab)  aa       a        ab
(a*+)(a?)(ab)  aaaa              <Match fails!>
(a+)(a*)(ab)   aaa               ab 
(a+?)(a*)(ab)  a        aa       ab
(a++)(a*)(ab)  aaaa              <Match fails!>

説明:

  • a?1つを一致させようとしaますが、一致全体が成功するために必要な場合は、何も一致しないように準備されています。
  • a??何も一致させようとしませんが、一致a全体が成功するために必要な場合は、1つを一致させる準備ができています。
  • a?+1つを一致させようとしaます。それが可能であれば、全体的な試合が成功するためにそれが必要だった場合、何も試合に戻ることはありません。と一致しない場合aでも、喜んで一致するものはありません。
  • a*できるだけ多くaのsを一致させようとしますが、一致全体が成功するために必要な場合でも、より少ないasを一致させる準備ができています。
  • a*?何も一致させようとしませんが、一致a全体が成功するために絶対に必要な数だけ一致するように準備されていますが、それ以上は一致しません。
  • a*+aできるだけ多くのsを一致させようとします。それが可能であれば、全体的な一致が成功するために必要な場合は、一致する秒数が少なくなることはありません。aただし、1つでも一致しない場合はa、何も一致しません。
  • a+できるだけ多くのsを一致させようとしますが、一致全体を成功させるために必要な場合は、より少ないs(ただし少なくとも1つ)aを一致させる準備ができています。a
  • a+?1つだけを一致させようとしますが、一致全体を成功させるために絶対に必要なa数だけ一致するように準備されていますが、それ以上は一致しません。a
  • a++aできるだけ多くのsを一致させようとします。それが可能であれば、全体的な一致が成功するために必要な場合は、一致する秒数が少なくなることはありません。a単一でも一致しない場合a、正規表現は失敗します。
于 2013-01-15T22:22:13.587 に答える