Java 用于sql分析的regexp
我正在尝试找到一个java正则表达式,它匹配所有select语句查询,这些查询前面没有插入、更新、删除、过程等关键字: 此时此刻,我得到了这个: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
^(?!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;我用这个工具进行简单的调试你能看吗?我用这个工具进行简单的调试你能看吗?