Python/RegEx/findall:如何从匹配后面提取模式?
我确实研究了“回头看”模式(?我想你想要这样的东西Python/RegEx/findall:如何从匹配后面提取模式?,python,regex,Python,Regex,我确实研究了“回头看”模式(?我想你想要这样的东西 >>> import re >>> s = """aaaaaaGET(abc)aaaaaa ... aaaaaaaaaaaaa ... aaaaaMATCH(00)aaaaaaa ... aaaaaaaaaaaaa ... aaaaGEX(xyz)aaaaaa ... aaaaaaGET(notneed)aaaaaa ... aaaaaaGEX(no)aaaaaa ... aaaaaaGET(nope)aaa
>>> import re
>>> s = """aaaaaaGET(abc)aaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(00)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(xyz)aaaaaa
... aaaaaaGET(notneed)aaaaaa
... aaaaaaGEX(no)aaaaaa
... aaaaaaGET(nope)aaaaaa
... aaaaaaGET(AbC)aaaaaa
... aaaaaaaaaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(01)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(XYz)aaaaaa"""
>>> m = re.findall(r'GET.*?\(([^)]*)\)(?:(?!GET|GEX).)*?\(([^)]*)\)(?:(?!GET|GEX).)*?GEX\(([^)]*)\)', s, re.DOTALL)
>>> m
[('abc', '00', 'xyz'), ('AbC', '01', 'XYz')]
(?:(?!GET | GEX)。*
负前瞻检查以下三个字符是否不为GET
或GEX
,如果不存在,则只与下一个字符匹配。我想你想要这样的东西
>>> import re
>>> s = """aaaaaaGET(abc)aaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(00)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(xyz)aaaaaa
... aaaaaaGET(notneed)aaaaaa
... aaaaaaGEX(no)aaaaaa
... aaaaaaGET(nope)aaaaaa
... aaaaaaGET(AbC)aaaaaa
... aaaaaaaaaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(01)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(XYz)aaaaaa"""
>>> m = re.findall(r'GET.*?\(([^)]*)\)(?:(?!GET|GEX).)*?\(([^)]*)\)(?:(?!GET|GEX).)*?GEX\(([^)]*)\)', s, re.DOTALL)
>>> m
[('abc', '00', 'xyz'), ('AbC', '01', 'XYz')]
(?:(?!GET | GEX)。)*
负前瞻检查以下三个字符是否不为GET
或GEX
,如果不存在,则只与下一个字符匹配。您是否忘记包含您使用的实际模式?还有,GETX
是什么?@thefourtheye我没有真正的字符。我只是添加了如何在如果这有帮助,这只是一种方法。干杯你忘了包括你使用的实际模式了吗?还有,GETX
?@thefourtheye我真的没有。我只是补充了如果这只有一种方法有帮助,我将如何获得比赛。干杯
re.findall('MATCH\((\d*)\).*?GEX\(([A-Za-z]*)\)', text, re.DOTALL)
>>> import re
>>> s = """aaaaaaGET(abc)aaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(00)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(xyz)aaaaaa
... aaaaaaGET(notneed)aaaaaa
... aaaaaaGEX(no)aaaaaa
... aaaaaaGET(nope)aaaaaa
... aaaaaaGET(AbC)aaaaaa
... aaaaaaaaaaaaa
... aaaaaaaaaaaaa
... aaaaaMATCH(01)aaaaaaa
... aaaaaaaaaaaaa
... aaaaGEX(XYz)aaaaaa"""
>>> m = re.findall(r'GET.*?\(([^)]*)\)(?:(?!GET|GEX).)*?\(([^)]*)\)(?:(?!GET|GEX).)*?GEX\(([^)]*)\)', s, re.DOTALL)
>>> m
[('abc', '00', 'xyz'), ('AbC', '01', 'XYz')]