regex仅在子字符串是唯一出现的情况下匹配,而在子字符串加上其他内容时不匹配

时间:2019-04-22 23:36:39

标签: java regex

这有点复杂。因此示例可能会有所帮助

我只想从以下类型的字符串中匹配/分组值

SELECT hello,world from tableName where id = 'hello';

而不是

SELECT hello,world FROM tableName where id='hello' and blah='jjk';

SELECT hello from tableName where blah='jjk' and id='hello';

如您所见,我只想匹配where id = 'hello'是唯一存在的where子句。

我想分组以获取columnNames,tableName和id;

这是我构建的regex,但可以满足以上所有条件。

注意:id的值是固定长度。也就是说,它始终是5个字符。

1 个答案:

答案 0 :(得分:1)

这个怎么样?似乎可以满足您的要求。

SELECT\s+(.*)\s+FROM\s+(.*)[\s]+?where\s+id\s*=\s*('[a-z]{5}')\s*;$

Regex101与某些测试的链接:https://regex101.com/r/anRIrL/3/tests