【发布时间】:2018-07-12 18:23:21
【问题描述】:
我尝试在 python 中获取第一次出现的开始正则表达式和最后一次出现的结束正则表达式之间的所有组匹配。
这是一个(非常简化的)具体示例,我尝试获取所有由字母数字字符 + 空格 + 数字组成的字符串,并且在括号之间。结果应该是 ["B 2", "C 3", "D 4"],但我没有得到它的工作。
import re
s = "A 1 (B 2 C 3 D 4) E 5"
re.findall("(\w+\s\d+)", s) # ['A 1', 'B 2', 'C 3', 'D 4', 'E 5']
re.findall("(?<=\()(\w+\s\d+)", s) # ['B 2']
re.findall("(\w+\s\d+)(?=\))", s) # ['D 4']
re.findall("(?<=\()(\w+\s\d+)(?=\))", s) # []
# desired result: ["B 2", "C 3", "D 4"]
我的尝试并没有限制搜索区域,而是自己修改组匹配的模式,我不想实现。
我将不胜感激。
最好的问候
AFeee
【问题讨论】:
-
是
slice可以帮你re.findall("(\w+\s\d+)", s)[1:-1]吗? -
很遗憾,没有,因为在实际用例中,我不知道受起始正则表达式和结束正则表达式限制的区域之前或之后的元素数量。我的问题中的示例非常简化。不过谢谢。
标签: python regex python-3.x pattern-matching regex-group