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
。はい、a
s はオプションですが、そうでb
はありません。一致が見つかるには、存在する必要があります。ありませんb
。1345536
決して一致することはありません。a
RE エンジンは、最初にまたはを探しますb
。どちらでも構いません。が見つかった場合は、 aに到達する (一致) か、非(および非) に到達する (不一致)まで、 s のa
スキャンの一致を試行し始めます。見つかった最初の文字が;だった場合 一致はすぐに見つかります。a
b
b
a
b
要するに、a*b
意味を多少誤解しています。のオプション性は、 とa
は何の関係もありませんb
。