正则匹配字母偶数个数
我需要在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]*)*$