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 次或多次。
;:匹配分号结尾
(?:)表示非捕获分组