Python正则表达式要匹配;关于;SQL中的join子句

Python正则表达式要匹配;关于;SQL中的join子句,python,regex,Python,Regex,我正在尝试使用python分析一些SQL。我的SQL可能包含多个指定表联接的“on”子句 e、 g “在tableA.user_id=tableB.id上” 我想解析出所有的连接关系 我尝试了以下方法,但很难检测到多个。它只是找到了第一个,然后停在那里。有人能帮忙吗 pattern = re.compile(r'on\s([^"\s]*)\s*=\s*([^"\s]*)') results = re.search(pattern, sql) for result in results.group

我正在尝试使用python分析一些SQL。我的SQL可能包含多个指定表联接的“on”子句

e、 g

“在tableA.user_id=tableB.id上”

我想解析出所有的连接关系

我尝试了以下方法,但很难检测到多个。它只是找到了第一个,然后停在那里。有人能帮忙吗

pattern = re.compile(r'on\s([^"\s]*)\s*=\s*([^"\s]*)')
results = re.search(pattern, sql)
for result in results.groups():
     print result

如果您想坚持使用python,请查看(非常好的)python正则表达式文档。它特别指出,重新搜索只匹配一个事件

您可能希望使用re.match,如果不匹配,它将返回none,否则将使用包含所有发生情况的match对象。

我将使用该函数

返回字符串中模式的所有非重叠匹配项,作为字符串列表。从左到右扫描字符串,并按找到的顺序返回匹配项。如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。空匹配将包含在结果中,除非它们触及另一个匹配的开头


也许对你有用好吧,我想出来了。我需要使用findall: