文字列に
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) aaa 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
と一致するように準備されています。
a?+
は、一致するように試みますa
。それが可能ならば、でなく、が完全に成功するために必要であれば、何もマッチしないようにバックダウンします。それがa
に一致しない場合、それは何も喜んで一致しません。
a*
はできるだけ多くの数字をa
と一致させようとしますが、一致する数字が成功するために必要な場合は何も入力しないようにしても、一致する数字はa
です。
- は何も一致しようとしませんが、マッチ全体が成功するためには絶対に必要な数だけ
a
と一致するように準備されていますが、それ以上は成功しません。
a*+
は可能な限り多くの番号をa
と一致させようとします。それができれば、ではなく、と一致して、全体一致が成功するために必要だった場合は、より少なく一致するようになります。a
単一のa
でも一致しない場合は、何も喜んで一致しません。
a+
は可能な限り多くの数字をa
と一致させようとしますが、マッチ全体が成功するために必要な場合は、a
(ただし少なくとも1つ)と一致するように準備されています。
a+?
は1つだけa
と一致しようとしますが、マッチ全体が成功するためには絶対に必要ですが、それ以上は一致しないように調整されています。
a++
はできるだけ多くa
と一致するようにします。それができれば、ではなく、と一致して、全体一致が成功するために必要だった場合は、より少なく一致するようになります。a
1つでもa
と一致しない場合、正規表現は失敗します。
なぜですか?どこかの誰かがそれらを使用しているからですか?あなたは本当に正規表現の文書を読んで、IRBやrubular.comを使って物事を試し、彼らの働き方を見て、あなたが将来学んだことを覚えておく必要があります。プログラム学習の多くは、マイナーな変更の影響を観察する実験であり、人々にそれらのことを説明するよう求めない。 –
http://www.regular-expressions.info/possessive.html – Phrogz
@TimPietzcker私に投票してくれてありがとう。それは私のためには重要ではありませんが、下の投票は「新しい投稿」にロックをかけます。私はそのような投票には少なくとも介入していますが、そのような概念を持つような鋭い概念を持っている人が好きすぎるほどあなたを魅了します。しかし、何人かの「SO」ユーザーは、質問の重要性を知らずに、他の人に「投票しない」ことにもっと興味があることを見ている。私の 'Post'を理解していなければOKです。しかし、回答が投稿され、回答があまりにも多くの知識があるときは、投票した人に投票して戻ってみませんか? – DoLoveSky