两个正则表达式之间的OR符号

时间:2011-12-12 09:52:29

标签: sql regex select

我需要在FROMWHERE;

之间提取字词

为此,我有

Pattern p = Pattern.compile("(?<=\\bFROM\\b).*?(?=\\bWHERE\\b)");

这很好。

示例1:

input = "select * from emp, dept where 1 =1 "

使用上面的模式,它将返回

emp, dept

示例2:

input = "select * from emp, dept"

从上面的输入我写的如下:

Pattern p = Pattern.compile("(?<=\\bFROM\\b).*?(?=\\bWHERE|;\\b)");  

返回emp,dept,但它没有返回。

请您帮我们解决这个问题?

1 个答案:

答案 0 :(得分:0)

修改表达式以识别WHERE子句中的所有字符,并使其成为可选

(?<=\bFROM\b).*?(\s*WHERE\s.*)?$