我正在使用正则表达式来匹配 SQL 查询中的 where 条件。
我想要WHERE <ANY CONDITION>
,但除了WHERE ROWNUM <WHATEVER>
.
所以我不想ROWNUM
出现在WHERE
关键字之后。
我确实使用Lookaheads来实现这一点。我的正则表达式是WHERE (.*(?! ROWNUM )+)
. 问题是,它仍然匹配WHERE ROWNUM < 1000
。如果我在正则表达式中删除了之前的空格ROWNUM
,那么名称以结尾的任何列ROWNUM
都将不匹配。如果我删除之后的空格,WHERE
即使WHERE
关键字后面没有空格,它也会匹配。ROWNUM
但是,如果和关键字之间有两个空格或任何其他字符WHERE
(可能是条件),则可以。所以如果ROWNUM
是第一个条件,我的正则表达式不起作用。
我怎样才能解决这个问题 ?