Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/RegEx/findall:如何从匹配后面提取模式?_Python_Regex - Fatal编程技术网

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')]