我正在尝试使用Python的regex包捕获多行文本中的所有文本。我的文本是,你会注意到它是SQL。为什么这是相关的是,我想捕捉一切之间的“选择”短语和“从”短语。在下面的例子中,我有3个项目,column1,column2,sum(column3),但我可以有更多。
另外,我只知道我可能会有\n
或\r
,但我不知道它是一个还是多个。你知道吗
SELECT
a11.Column1
, a12.Column2
,SUM(Column3)
FROM DB.MyFactTable a11
LEFT OUTER JOIN DB.MyDimTable_1 a12 ON
(a11.k1 = a12.k1 AND a11.k2 = a12.k2 AND a12.k3 = a11.k3)
LEFT OUTER JOIN DB.MyDimTable_2 a13 ON
(a11.k1 = a12.k2 AND a11.k4 = a12.k4 AND a12.k5 = a11.k5)
WHERE a11.Column_N IN (X1, X2, X3, X4)
GROUP BY 1,2
到目前为止,我的正则表达式
rgx_pat = (?<=SELECT)(\s)*.*\n.*
result = re.findall(rgx_pat,my_sql_above,re.MULTILINE)
事先谢谢你的帮助。你知道吗
我认为你的问题是你不知道^{} 标志。你知道吗
如果你想找到一堆包括换行符在内的东西,你不需要试图找出一个除了换行符和换行符之外的所有东西的查询,只要使用
DOTALL
,现在.
表示任何包括换行符的东西。你知道吗所以:
现在
result
将是:我不确定您是要
.*?
还是.*
,以及是否要在SELECT
之后和FROM
之前强制使用空格,所以我猜测了您要执行的操作。你知道吗相关问题 更多 >
编程相关推荐