正则匹配字母偶数个数

21 投票
8 回答
36126 浏览
提问于 2025-04-15 17:54

我需要在Python中使用正则表达式来匹配一个只匹配字母出现次数为偶数的表达式。比如:

AAA        # no match
AA         # match
fsfaAAasdf # match
sAfA       # match
sdAAewAsA  # match
AeAiA      # no match

字母A出现的次数是偶数时,应该可以匹配。

8 个回答

3

这段话的意思是,它会查找一个包含奇数个字母"A"的字符串块。如果找到了这样的块,那么这个字符串对你来说就是不好的:

(?<!A)A(AA)*(?!A)

如果我理解得没错,Python代码应该是这样的:

if re.search("(?<!A)A(AA)*(?!A)", "AeAAi"):
   print "fail"
4

为什么要费那么大劲去想一个难以理解的模式呢?不如直接搜索这个模式出现的所有地方,然后数一数你找到了多少个。

len(re.findall("A", "AbcAbcAbcA")) % 2 == 0

这个方法对所有有经验的程序员来说应该是立刻能明白的,而像“(?”这样的模式就不太容易理解了。

简单的方式更好。

29

试试这个正则表达式:

^[^A]*((AA)+[^A]*)*$

如果A不需要连续出现的话:

^[^A]*(A[^A]*A[^A]*)*$

撰写回答