我需要从CTAS SQL语句中获取选择语句。
例如)
create table table1 as select * from table2
Python代码:
rgxselect = re.compile(r"(((?:select|with)[\s\S]*))",re.MULTILINE|re.IGNORECASE)
s = rgxselect.search(item)
if s:
selectclause = s.groups()[0]
这适用于第一个示例,但在括号的情况下,如以下示例
create table table1 as (select * from table2)
我想要么
(select * from table2)
或
select * from table2
1条答案
按热度按时间xn1cxnb41#
对于字体级深嵌套圆括号的情况,可以使用
请参见regex demo。
\b
-字边界(?:select|with)
-select
或with
\b
-字边界[^()]*
-(
和)
之外的零个或多个字符(?:\([^()]*\)[^()]*)*
-零个或多个序列\([^()]*\)
-(
+除(
和)
+)
之外的零个或多个字符[^()]*
-(
和)
之外的零个或多个字符