Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有这个红宝石表达式如下
(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)*
会没事的。