0
私は、SQL文から項目を抽出する正規表現コードを書いています。私はSELECT * FROM
とWHERE
ステートメントの後の項目のタプルを抜き出したい。上記のパターンから正規表現pythonのSQL文
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
を取りますか?
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)
出力:あなたのパターンを変更することができ、
('A, B, C', 'A.ColA = B.ColB AND B.ColB2=C.ColC')
または:
import re
results = ('A, B, C\n ', 'A.ColA = B.ColB AND B.ColB2=C.ColC')
new_results = tuple(re.sub('\n\s+$', '', i) for i in results)
を出力:
q = """SELECT * FROM A, B, C
WHERE A.ColA = B.ColB AND B.ColB2=C.ColC"""
ありがとうございました!それを繰り返していくという付加的なアプローチに感謝します。また、パターンの交替の清潔さが大好きです – GenXeral
@GenXeralは助けてうれしい!それがあなたを助けたら答えを受け入れてください。ありがとうございました! – Ajax1234