我正在尝试匹配以下字符串:
2 match virtual-address 172.29.210.119 tcp eq www
4 match virtual-address 172.29.210.147 tcp any
预期产出:
^{pr2}$我正在使用模式:
match virtual-address (\d+\.\d+\.\d+\.\d+)\s?(\w+)? (?>eq)?\s?(\d+|\w+)
但是当我在python中使用相同的模式进行匹配时,我得到了以下错误:
Traceback (most recent call last):
File ".\ace2f5_parser.py", line 119, in <module>
virtual_ip_proto_port = re.findall(pattern_virtual_ip_proto_port, line)
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\re.py", line 213, in findall
return _compile(pattern, flags).findall(string)
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\re.py", line 293, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\sre_compile.py", line 536, in compi
p = sre_parse.parse(p, flags)
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 829, in parse
p = _parse_sub(source, pattern, 0)
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 437, in _parse_
itemsappend(_parse(source, state))
File "C:\Users\hpokhare\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 767, in _parse
len(char) + 1)
sre_constants.error: unknown extension ?> at position 53
这个错误是什么意思。它不支持吗?>;。关于如何解决这个问题的任何想法。在
可以在Python中使用此regex:
RegEx Demo
pythonregex不像PCRE那样支持原子组语法
(?>..)
。在如果为“python”修改regex101的风格,您将看到您不能使用
(?>eq)?
另一种方法是使用
$
,在行尾断言位置。使用(\w+)$
将捕获字符串语句的最后一个。在相关问题 更多 >
编程相关推荐