正则表达式python sql语句
我正在编写一个正则表达式代码来从SQL语句中提取项。我想在SELECT*FROM和WHERE语句之后提取一个项目元组正则表达式python sql语句,python,Python,我正在编写一个正则表达式代码来从SQL语句中提取项。我想在SELECT*FROM和WHERE语句之后提取一个项目元组 pattern = ''' SELECT\s\*\sFROM\s ([a-zA-Z\s*\,*\=\.]+) \sWHERE \s*([a-zA-Z\d*\s*\,*\=*\.*]+)''' 根据上面的模式,我将其用于下面的SQL语句,并得到以下结果: ('A, B, C\n ', 'A.ColA = B.ColB AND B.ColB2=C.Col
pattern = '''
SELECT\s\*\sFROM\s ([a-zA-Z\s*\,*\=\.]+) \sWHERE \s*([a-zA-Z\d*\s*\,*\=*\.*]+)'''
根据上面的模式,我将其用于下面的SQL语句,并得到以下结果:
('A, B, C\n ', 'A.ColA = B.ColB AND B.ColB2=C.ColC')
我知道这是因为WHERE之前有一个巨大的中断,但是我如何将其考虑进去,并在我的第一个元组之后去掉巨大的空间和/n呢
q = """SELECT * FROM A, B, C
WHERE A.ColA = B.ColB AND B.ColB2=C.ColC"""
您可以循环返回的结果并使用re.sub: 输出:
('A, B, C', 'A.ColA = B.ColB AND B.ColB2=C.ColC')
['A, B, C', 'A.ColA = B.ColB AND B.ColB2=C.ColC']
或者,您可以改变您的模式:
import re
q = """SELECT * FROM A, B, C
WHERE A.ColA = B.ColB AND B.ColB2=C.ColC"""
new_data = re.findall('(?<=SELECT \* FROM\s)[A-Z\s,]+(?=\n)|(?<=WHERE\s)[\w\W]+', q)
谢谢欣赏附加的循环方法。而且还喜欢图案的整洁alternation@GenXeral很乐意帮忙!如果答案对你有帮助,请接受。非常感谢。
['A, B, C', 'A.ColA = B.ColB AND B.ColB2=C.ColC']