Java之正則表達式在字符串中查找中文

轉自:http://blog.csdn.net/csdn_yaobo/article/details/48377757 
原本是要收藏的,可是不知怎麼了,點了收藏沒有反應,只好先轉載一下,等能收藏的時候,會刪除此文章
web

學習了正則表達式後,感受正則表達式很強大,可是爲了更好地理解正則表達式,找了一個很實際的問題來分享一下本身學習的心得。本題目是招聘時的一個題目,題目大體的意思是這樣的:用戶每次在網上消費東西,以後會給商家評論,可是這個評論中會有許多人評論一下小廣告,爲了能找出這些評論,咱們假設這樣一個場景:正則表達式

常常的一些小廣告會有下面一下詞語:」網店地址「,「銷售」,「代購」;

       假如一個用戶的評論是這樣:這家酒店性價比高,提供海外代%……&購*&&6服……&**務」,網店地址:¥……**&*6「;

    要求:匹配出關鍵字,並打印出關鍵字和該條評論。

    就如上面這個題,我想已經表達的夠清楚了,咱們該怎麼下手呢?咱們常常的想法是一個一個掃描匹配,可是這樣是否是太麻煩,並且有的評論中會有不少特殊字符,那咱們怎麼辦呢?個人思路是這樣,咱們匹配的都是關鍵字,也就是漢字,那麼能夠將上述評論中全部的特殊符號(包括字母,空格,數字等)所有刪除掉,只剩下漢字,而後咱們去匹配關鍵字,這樣就簡單了,下來用一段程序說一下怎樣去除特殊符號:



    String string1 = "我愛編w!@#程  www#

她不5454 dadad &*$()###(愛編dadada程w!」;編程

String regEx="[`~!@#$%^&*()+=|{}:;\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:」「’。,、?a-zA-Z0-9 ]";
     Pattern c = Pattern.compile(regEx);
     Matcher mc=c.matcher(string1);
     String result =  mc.replaceAll("").trim();  
     System.out.println(result);

解釋一下上面的程序:我給了這樣一句話「我愛編w!@#程 www#學習

她不5454 dadad &*$()###(愛編dadada程w!」,而後從這句話中找出匹配「編程」關鍵字;而後並輸出,上面regEx是正則表達式,目的是過濾掉全部特殊字符,可能我寫的這個有漏掉的字符,能夠根據本身的須要修改,這樣咱們就將這句話通過過濾變成了下面這樣:spa

上面已經去除掉特殊符號了,下來是最關鍵的是怎樣匹配關鍵字呢?又用一個簡單的程序示例說一下:.net

 
 
Pattern p = Pattern.compile("[編][程]"); Matcher m = p.matcher(result); while(m.find()){ System.out.println(m.group()); }
 
 

 

 
 

上面那個「(「[編][程]」)」就是匹配關鍵字,不能寫成「[編程]」,若是寫成「[編程]」就會出現每一個字和上面那句話匹配,而不是一個詞語匹配,和咱們想要的結果大相徑庭,這個能夠參考正則表達式的概念(寫到一個裏至關雨或的概念,寫到兩個裏就是兩個條件是且的意思如:[0-9,a-z]與[0-9][a-z])。若是有匹配的,輸出匹配的關鍵字。下面是輸出的結果,這句話中出現了兩次編程,咱們都匹配出來了,並且都輸出來了。code

相關文章
相關標籤/搜索