2009年6月21日 星期日

Java正規表示式 忽略大小寫用法

今天因為一個case,想用java的正規表示式(RegExp)去完成
Java有提供Pattern跟Matcher物件來幫我們做到正規表示搜尋的功能
但今天我遇到一個問題,我希望在搜尋的單字中忽略大小寫
這在一般的RegExp有兩個方法可以解決,假設今天我想找boy這個單字
  • (B|b)(O|o)(Y|y)
  • 使用參數 i

第一個方法如果單字固定的話還可以用,但是搜尋條件是由對方輸入的時候
就必須仰賴第二個方法
RegExp在下語法的時候有個格式

/RegExp/flag

第一個是搜尋條件,第二個是搜尋參數
在java則是使用函式

Pattern.compile(String RegExp,int flag);

所以我想忽略大小寫的話只要使用CASE_INSENSITIVE這個flag就可以解決了

舉個例子

....
Pattern pattern=Pattern.compile(regexp,Pattern.CASE_INSENSITIVE);
Matcher matcher=pattern.matcher(data);
if(matcher.find()){.....}
...

regexp是由我們下的搜尋語句,data則是想搜尋的來源字串

沒有留言: