gpt4 book ai didi

java - 用于sql分析的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:05 26 4
gpt4 key购买 nike

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

此刻得到这个:

^(?!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 ;

结果:仅匹配从双重中选择 1;

此链接有测试用例:

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

最佳答案

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

引用: How to use JavaScript regex over multiple lines?

关于java - 用于sql分析的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com