我有一个看起来像这样的数据库查询
select * from students join (select * from teachers) join (select * from workers
我要求根据'select'对此字符串进行标记。
我正在尝试正则表达式(select)(.*?)((?:select)|$)
,它只匹配2次。
请求一些关于如何实现这一目标的指示。
我需要3个输出令牌,如下所示
select * from students join (
select * from teachers) join (
select * from workers
答案 0 :(得分:2)
我认为这个正则表达式会起作用:
select.*?(?=select|$)
正则表达式匹配单词select
,然后匹配任何文本(不包括新行)直到下一个select
或字符串结尾之前。
答案 1 :(得分:0)
如果您尝试解析字符串中的选择查询,则可以使用此正则表达式。假设您没有从多个表中进行选择(即不执行select * from x,y,z
)
(select.*?from\\s+\\w+)