python - 重复序列的正则表达式

标签 python regex

我想匹配三个字符的字母序列(只允许字母“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/

相关文章:

python - 绕过python中的ssl证书验证

python - 如何找到 Python 中两个日期时间对象之间的毫秒差异?

PHP preg_replace() 改变版权年份

regex - 如何在 Groovy 中将列表与正则表达式匹配

java - 在 "+"符号上拆分 Java 字符串会出现错误

regex - 按姓氏字母顺序对字符串元胞数组进行排序

python - 在 Raspberry Pi 上安装 Pillow 时出错

Python asyncio : function or coroutine, 使用哪个?

python - 用 pandas 在 excel 中给单元格着色

javascript - IsBasicLatin 和 IsLatin-1Supplement 作为 JavaScript 正则表达式