Java 用于sql分析的regexp

Java 用于sql分析的regexp,java,sql,regex,Java,Sql,Regex,我正在尝试找到一个java正则表达式,它匹配所有select语句查询,这些查询前面没有插入、更新、删除、过程等关键字: 此时此刻,我得到了这个: ^(?!insert|delete|update|procedure) {0,}select.*?;$ gims 但如果select在新行中开始,则不匹配: 测试用例: select 1 from dual; delete from table where id = ( select 1 from dual ); update table set

我正在尝试找到一个java正则表达式,它匹配所有select语句查询,这些查询前面没有插入、更新、删除、过程等关键字:

此时此刻,我得到了这个:

^(?!insert|delete|update|procedure) {0,}select.*?;$ gims
但如果select在新行中开始,则不匹配:

测试用例:

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 ;
结果:仅匹配<代码>从双重选择1

此链接包含测试用例:

参数“multiline”独立考虑每一行,因此在当前搜索中不考虑其他行上的内容。我相信你正在寻找的是更多的跨行搜索,以考虑前面的语句语句。尝试使用[\s\s]而不是“.”的方法

参考:

参数“multiline”独立考虑每一行,因此在当前搜索中不考虑其他行上的内容。我相信你正在寻找的是更多的跨行搜索,以考虑前面的语句语句。尝试使用[\s\s]而不是“.”的方法

参考:

对不起,我不明白你的意思(不同的select语句)。你能举一些例子吗?你希望得到什么输出?只匹配dual中的select 1;对不起,我不明白你说的(不同的select语句)是什么意思。你能举一些例子吗?你希望得到什么输出?只匹配dual中的select 1;我用这个工具进行简单的调试你能看吗?我用这个工具进行简单的调试你能看吗?