我想匹配三个字符的字母序列(只允许字母“a”、“b”、“c”),以逗号分隔(最后一组不以逗号结尾)。
例子:
abc,bca,cbb
ccc,abc,aab,baa
bcb
我写了下面的正则表达式:
re.match('([abc][abc][abc],)+', "abc,defx,df")
但是它不能正常工作,因为对于上面的例子:
>>> print bool(re.match('([abc][abc][abc],)+', "abc,defx,df")) # defx in second group
True
>>> print bool(re.match('([abc][abc][abc],)+', "axc,defx,df")) # 'x' in first group
False
似乎只检查第一组三个字母,但忽略其余部分。如何正确编写这个正则表达式?
最佳答案
尝试以下正则表达式:
^[abc]{3}(,[abc]{3})*$
^...$
从字符串的开始到结束
[...]
给定字符之一
...{3}
前面的短语的三倍
(...)*
0 到括号中字符的 n 次
关于python - 重复序列的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516625/