暂时解决这个正则表达式问题 - 我不知道这是否是表达此问题的正确方法,但我想提取连续匹配的组,例如字符串" a-> B-&以及c"我想为" a-> b"创建匹配组。 &安培; " B-&以及c"还有个别角色,所以" a"," b"和" c"。到目前为止,我有这个正则表达式:
"(([A-Z a-z 0-9 _]+)(?:\s*->\s*)([A-Z a-z 0-9 _]+))"
只能成功匹配群组" a-> b"," a" &安培; " B"而不是" b-> c" &安培; " C"
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
(?=((\w+)\s*->\s*(\w+)))
请尝试使用re.findall
。请参阅演示。正则表达式无法正常工作的原因是因为匹配重叠。首次匹配完成后,->
之前没有元素匹配。要克服此问题我们使用lookahead
,它不捕获但是断言
https://regex101.com/r/pG1kU1/32
import re
p = re.compile(r'(?=((\w+)\s*->\s*(\w+)))')
test_str = "a->b->c"
re.findall(p, test_str)