sre_constants.error:在位置2重复多次

时间:2017-12-07 09:55:59

标签: python regex python-3.x

我尝试匹配+h之间的所有子字符串,例如+abcd1234h

代码如下:

match = re.match(r'.*+(.*)h.*',line)
当我运行我的代码时,

发生如下错误:

File "C:\Program Files\Python\Python36\lib\re.py", line 172, in match
    return _compile(pattern, flags).match(string)

  File "C:\Program Files\Python\Python36\lib\re.py", line 301, in _compile
    p = sre_compile.compile(pattern, flags)

  File "C:\Program Files\Python\Python36\lib\sre_compile.py", line 562, in compi
le
    p = sre_parse.parse(p, flags)

  File "C:\Program Files\Python\Python36\lib\sre_parse.py", line 855, in parse
    p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)

  File "C:\Program Files\Python\Python36\lib\sre_parse.py", line 416, in _parse_
sub
    not nested and not items))

  File "C:\Program Files\Python\Python36\lib\sre_parse.py", line 619, in _parse
    source.tell() - here + len(this))

sre_constants.error: multiple repeat at position 2

似乎是一个常规的快递错误,如何解决?

1 个答案:

答案 0 :(得分:0)

转发+

>>> re.match(r".*\+(.*)h.*", "+abcd1234h").groups()
('abcd1234',)

在正则表达式中,+具有特殊含义(匹配前面一个或多个字符)。显然,您知道*表示匹配零或更多。

因此异常告诉你到底出了什么问题......表达式包含一个"多次重复" (*+

注意:

没有必要将re.match与前导和尾随匹配规则一起使用,您可以更简洁地执行此操作:

>>> re.search(r"\+(.*)h", "+abcd1234h").groups()
('abcd1234',)