私は以下のようにこのルビー式を持っています
(a|bc)(d?|e)*
rubular を使用して、この式に適合する可能性のある文字列をテストすると、適合しない理由がわからない文字列がいくつかあります
文字列は「ade」で、「ad」には一致しますが、「e」には一致しません。誰でも助けることができますか?
私は以下のようにこのルビー式を持っています
(a|bc)(d?|e)*
rubular を使用して、この式に適合する可能性のある文字列をテストすると、適合しない理由がわからない文字列がいくつかあります
文字列は「ade」で、「ad」には一致しますが、「e」には一致しません。誰でも助けることができますか?
(d?)* は非貪欲な一致であり、e* は論理 or によって「短絡」されます。可能な限り一致しません。
なぜそこに疑問符を付けたのかわかりません。使うだけ
(a|bc)(d|e)*
良くなるよ。
入力した正規表現の 2 番目の部分 (d?|e)* が問題です。?d の場合、d に 0 回または 1 回一致します。文字列 ade を実行すると、正規表現は a、次に d、次に d に 0 回一致します...代わりに (a|bc)(d|e)* に変更すると、ade に一致し、次のようになります。あなたが探しているセマンティクス。