0

私は以下のようにこのルビー式を持っています

  (a|bc)(d?|e)*

rubular を使用して、この式に適合する可能性のある文字列をテストすると、適合しない理由がわからない文字列がいくつかあります

文字列は「ade」で、「ad」には一致しますが、「e」には一致しません。誰でも助けることができますか?

4

2 に答える 2

1

(d?)* は非貪欲な一致であり、e* は論理 or によって「短絡」されます。可能な限り一致しません。

なぜそこに疑問符を付けたのかわかりません。使うだけ

(a|bc)(d|e)*

良くなるよ。

于 2012-09-08T06:17:06.577 に答える
1

入力した正規表現の 2 番目の部分 (d?|e)* が問題です。?d の場合、d に 0 回または 1 回一致します。文字列 ade を実行すると、正規表現は a、次に d、次に d に 0 回一致します...代わりに (a|bc)(d|e)* に変更すると、ade に一致し、次のようになります。あなたが探しているセマンティクス。

于 2012-09-08T06:04:17.820 に答える