我尝试匹配+
和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
似乎是一个常规的快递错误,如何解决?
答案 0 :(得分:0)
转发+
:
>>> re.match(r".*\+(.*)h.*", "+abcd1234h").groups()
('abcd1234',)
在正则表达式中,+
具有特殊含义(匹配前面一个或多个字符)。显然,您知道*
表示匹配零或更多。
因此异常告诉你到底出了什么问题......表达式包含一个"多次重复" (*+
)
没有必要将re.match
与前导和尾随匹配规则一起使用,您可以更简洁地执行此操作:
>>> re.search(r"\+(.*)h", "+abcd1234h").groups()
('abcd1234',)