a*b が検索式だとします。ターゲット テキスト aaaaaabbc と 1345536 に適用するとどうなるでしょうか。
のaaaaaabbc場合、最初の文字 (an a) で一致を試み始め、一致できることがわかり、最初の に到達するまで続けbます。その時点で停止し、成功を宣言します。(一部の言語では、デフォルトで暗黙的な文字列全体のアンカーが正規表現に追加されますが、従来はどこでも一致できます。)
を使用1345536すると、最初の文字で一致を試み、一致しない (どちらaでもないb) ことが判明したため、2 番目の文字からの試行に進みます。一致を開始できるポイントが見つからないため、文字列全体が一致しません。
また、考えてみましょうaaac(使用していないケースですが、参考になります)。ステート マシンは を見つけて一致を試みa始めますが、必須が見つからないため、実際には一致を完了することはなく、文字列は一致しません。 b
2番目のものでうまくいくはずだと私が言った理由はこれです。ゼロ以上の a があるはずであり、ゼロの a があります。それが進むにつれて、文字がなくなり、b と比較する機会がなくなります。じゃあお見合いじゃないの?
それは私が得ることができないものです、どのように、いつチャンスを得るでしょうか?
が何かに一致するためa*bには、0 個以上aの s の後に必須の が続く必要がありますb。はい、as はオプションですが、そうでbはありません。一致が見つかるには、存在する必要があります。ありませんb。1345536決して一致することはありません。aRE エンジンは、最初にまたはを探しますb。どちらでも構いません。が見つかった場合は、 aに到達する (一致) か、非(および非) に到達する (不一致)まで、 s のaスキャンの一致を試行し始めます。見つかった最初の文字が;だった場合 一致はすぐに見つかります。abbab
要するに、a*b意味を多少誤解しています。のオプション性は、 とaは何の関係もありませんb。