Regex -检查至少重复两次的字母

2ledvvac  于 2023-10-22  发布在  其他
关注(0)|答案(6)|浏览(88)

我想检查一个字符串是否至少包含两次字母a(或)。我写了正则表达式模式,并检查了它在regex101.com上的工作情况。
[aA]+[^aA]*[aA]+
要匹配的示例字符串:

banana   #True
pineapple  #False
Animal Kingdom  #True
A is for apple  #True

虽然代码按预期工作,但我担心是否有更好的方法来完成它,或者是否有一些情况与我的正则表达式不匹配。

vuktfyat

vuktfyat1#

为什么不简单点:

[aA].*[aA]

[^aA]*这样的附加模式语法似乎没有添加任何东西。

qqrboqgw

qqrboqgw2#

pineapple不应该匹配,是吗?
我建议使用([aA].*){2,},因为我认为它更容易阅读。
下面是基于你的建议的单元测试:https://regex101.com/r/WJnTW5/2

kxxlusnw

kxxlusnw3#

试试这个非常简单的:

(r"a.*a", text, re.IGNORECASE)

另一种方法是:
如果你输入[Aa]{n},这意味着你希望A/a连续重复n次,这不是在这种情况下,因为a是由字符分隔的,例如在香蕉中,a是由n分隔的。所以我们用[Aa].*[Aa]

(r"[Aa].*[Aa]", text)

两种方法都有效。

inn6fuwd

inn6fuwd4#

我写了这个,它起作用了:

re.search(r"a[a-z ]*a", text, re.IGNORECASE)

所以找到第一个a,遍历这些字符中的任何一个加上““,任何次数,直到你找到另一个a,不管是什么情况。

cbjzeqam

cbjzeqam5#

re.search(r"[aA].*a", text)
7gs2gvoe

7gs2gvoe6#

这种方式将工作:

(r"a+.+a", text.lower())

相关问题