使用Regex在末尾用元音匹配字符串

时间:2018-10-24 05:16:28

标签: regex python-3.x

我正在尝试返回列表中的项目,该列表的末尾字符串中包含四个或更多字符(可以重复)。

字符串为= "iaeou"

我写了

"[iaeou]+{4,}$"

这不是返回我想要的东西,我想知道它出了什么问题。

我收到错误“多次重复”。

>>> example = ['ti','tii','ta','tae','taeguu','fy']
>>> import re
>>> for item in example:
...  if re.search("[iaeou]+{4,}$",item):
...   print(item)
... 
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py", line 183, in search
    return _compile(pattern, flags).search(string)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py", line 286, in _compile
    p = sre_compile.compile(pattern, flags)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/sre_compile.py", line 764, in compile
    p = sre_parse.parse(p, flags)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/sre_parse.py", line 930, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/sre_parse.py", line 426, in _parse_sub
    not nested and not items))
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/sre_parse.py", line 654, in _parse
    source.tell() - here + len(this))
re.error: multiple repeat at position 8

1 个答案:

答案 0 :(得分:1)

您需要这样写

[iaeou]{4,}$

正则表达式中的部分'+ {4,}'无效,因为+本身是一个量词,而{4,}也是一个量词,并且由于正则表达式的有效性,您无法对其进行量化您必须收到一些模式错误。如果您真的想量化一个+号,则需要像这样转义,

\+{1,4}

但这不是您所希望的问题。希望能弄清楚。