pattern = r"(?:[^;']|'(?:\\.|[^'])*')+;"
sql_list = [match.group().strip() for match in re.finditer(pattern, execute_sql) if match.group().strip()]
for sql in sql_list:
print(sql)
(?:[^;']|'(?:\\.|[^'])*')+;
匹配 连续的非分号内容 或 单引号包裹的字符串,并且可以多次出现。
拆解:
[^;']
:匹配单引号或分号之外的字符。
'(?:\\.|[^'])*'
:匹配单引号包裹的字符串。
+
:匹配 1 次或多次。
;
:匹配分号结尾
(?:)
表示非捕获分组