我尝试获取python中第一次出现的开始正则表达式和最后一次出现的结束正则表达式之间的所有组匹配。
这里有一个(非常简化的(具体例子,我试图获得所有字符串,这些字符串由字母数字字符+空格+数字组成,并且位于括号之间。结果应该是["B2","C3","D4"],但我没有让它工作。
import re
s = "A 1 (B 2 C 3 D 4) E 5"
re.findall("(w+sd+)", s) # ['A 1', 'B 2', 'C 3', 'D 4', 'E 5']
re.findall("(?<=()(w+sd+)", s) # ['B 2']
re.findall("(w+sd+)(?=))", s) # ['D 4']
re.findall("(?<=()(w+sd+)(?=))", s) # []
# desired result: ["B 2", "C 3", "D 4"]
我的尝试并没有限制搜索区域,而是修改了组匹配本身的模式,这是我不想实现的。
我很感激你的帮助。
向致以最良好的问候
AFoeee
这是一种方法。
演示:
import re
s = "A 1 (B 2 C 3 D 4) E 5"
m = re.search(r"((?P<content>.*?))", s)
if m:
val = m.group("content")
print(re.findall(r"ws+d", val))
输出:
['B 2', 'C 3', 'D 4']
如果括号中有多个值,则
s = "A 1 (B 2 C 3 D 4) E 5 (X 2 Y 3 Z 4) V 4"
for m in re.findall(r"(.*?)", s):
print(re.findall(r"ws+d", m))
输出:
['B 2', 'C 3', 'D 4']
['X 2', 'Y 3', 'Z 4']