2016-10-27 30 views
2

我正在嘗試編寫正則表達式來查找以我的搜索文本開頭的單詞。正則表達式檢查單詞是否以搜索字符開始

當我運行這個程序,我得到下面的輸出:

真正的開始:3結束:6

Pattern p = Pattern.compile(("kh(\\w)"), Pattern.CASE_INSENSITIVE); 
String test = "Shakhir Khan"; 
Matcher m = p.matcher(test); 
System.out.println(m.find()+" start : "+m.start()+" end : "+m.end()); 

我想是應該從ShakhirKhan並沒有發現 '的Kh'。它只能在開始時才能找到,而不能在詞的中間找到。

回答

1

使用word boundary

Pattern.compile(("\\bkh(\\w)"), Pattern.CASE_INSENSITIVE); 
        ^^ 

字邊界不會考慮特殊符號,對於

(^|\b|\s)kh 

^與錨開始,|是或正則表達式的條件。 \b是詞邊界,\s匹配空格字符。

Demo

相關問題