2017-04-06 56 views
1

我真的想找到適用於Java的正則表達式匹配不一樣插入,更新,刪除程序等一些關鍵字之前的所有SELECT語句的查詢:正則表達式的SQL分析

在此刻,在得到這個:

^(?!insert|delete|update|procedure) {0,}select.*?;$ gims 

但不相匹配的權利,如果在新行選擇開始:

測試用例:

select 1 from dual; 
delete from table where id = 
(
select 1 from dual 
); 
update table set id = 1 where id in (
select 1 from dual); 
procedure dsdsd select fdsfds; 
PROCEDURE myproc() 
IS 
BEGIN 
SELECT 
1 from dual; 
END myproc ; 

結果:僅匹配select 1 from dual;

這個環節有測試用例:

https://regex101.com/r/2wkbOk/1

+0

很抱歉,但i'dont明白你(不同的SELECT語句)。可你舉一些例子是什麼意思? – jslsolucoes

+0

你期待什麼輸出? –

+0

只匹配從雙重選擇1; – jslsolucoes

回答

0

的「多」參數單獨考慮每一行,等其他線路的內容是不是在你當前的搜索考慮。我相信你所尋找的是更多的跨行搜索,以便考慮到之前在線的聲明。嘗試使用[\ s \ S]而不是「。」的方法。

參考: How to use JavaScript regex over multiple lines?

+0

即時通訊使用這個工具,以方便調試https://regex101.com/r/2wkbOk/1你可以看看嗎? – jslsolucoes