2011-12-12 37 views
0

我需要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,但它沒有返回。

請你幫我們解決這個問題嗎?

+0

是否使用正則表達式解析HTML? – madhead

+2

考慮一下:'SELECT column_FROM FROM table_WHERE WHERE 1 = 1' –

+0

@Bart我認爲'\ b'就是用於這個目的..因此沒問題。 – bluish

回答

0

修改你的表情識別WHERE子句中的所有字符,並使其可選

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

如果你有''select * from emp,dept order by id「'它會匹配一個錯誤的子字符串。 – bluish