我想检查一个字符串是否至少包含两次字母a
(或)。我写了正则表达式模式,并检查了它在regex101.com上的工作情况。[aA]+[^aA]*[aA]+
要匹配的示例字符串:
banana #True
pineapple #False
Animal Kingdom #True
A is for apple #True
虽然代码按预期工作,但我担心是否有更好的方法来完成它,或者是否有一些情况与我的正则表达式不匹配。
我想检查一个字符串是否至少包含两次字母a
(或)。我写了正则表达式模式,并检查了它在regex101.com上的工作情况。[aA]+[^aA]*[aA]+
要匹配的示例字符串:
banana #True
pineapple #False
Animal Kingdom #True
A is for apple #True
虽然代码按预期工作,但我担心是否有更好的方法来完成它,或者是否有一些情况与我的正则表达式不匹配。
6条答案
按热度按时间vuktfyat1#
为什么不简单点:
像
[^aA]*
这样的附加模式语法似乎没有添加任何东西。qqrboqgw2#
pineapple
不应该匹配,是吗?我建议使用
([aA].*){2,}
,因为我认为它更容易阅读。下面是基于你的建议的单元测试:https://regex101.com/r/WJnTW5/2
kxxlusnw3#
试试这个非常简单的:
另一种方法是:
如果你输入[Aa]{n},这意味着你希望A/a连续重复n次,这不是在这种情况下,因为a是由字符分隔的,例如在香蕉中,a是由n分隔的。所以我们用[Aa].*[Aa]
两种方法都有效。
inn6fuwd4#
我写了这个,它起作用了:
所以找到第一个a,遍历这些字符中的任何一个加上““,任何次数,直到你找到另一个a,不管是什么情况。
cbjzeqam5#
7gs2gvoe6#
这种方式将工作: