我有這種紅寶石表達如下Ruby的字符串不匹配的表達
(a|bc)(d?|e)*
當我使用rubular測試出適合這種表達可能的字串,我有一些字符串,我不明白爲什麼他們不適合
這些字符串是「ade」,它與「ad」匹配但與「e」不匹配。任何人都可以幫忙
我有這種紅寶石表達如下Ruby的字符串不匹配的表達
(a|bc)(d?|e)*
當我使用rubular測試出適合這種表達可能的字串,我有一些字符串,我不明白爲什麼他們不適合
這些字符串是「ade」,它與「ad」匹配但與「e」不匹配。任何人都可以幫忙
您輸入的正則表達式的第二部分(d?| e)*是問題所在。把這個?在d上說,匹配d 0或1次。當你穿過字符串ade,正則表達式匹配a,然後d,然後d 0次...如果你改爲(a | bc)(d | e)*,它會匹配ade,並且似乎有你正在尋找的語義。
(d?)*是一個非貪婪的匹配,e *將被邏輯或「短路」。它將盡可能少地匹配。
我不知道你爲什麼在那裏放一個問號。只要用
(a|bc)(d|e)*
會沒事的。
謝謝!明白! – edelweiss
只是想知道,所以包含e的字符串的任何部分都不會匹配正則表達式? – edelweiss
是的。我相信是這樣。 –