2016-10-27 4 views
2

私は検索テキストで始まる単語を見つけるためにRegExを作成しようとしています。単語が検索文字で始まるかどうかを調べるRegEx

私はこのプログラムを実行すると、私は次のような出力を得る:

真のスタートを: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()); 

私が欲しいのは、それがKhanからではなくShakhirから 'Khの' を見つける必要があります。開始時にのみ見つかるはずで、単語の真中にはありません。

答えて

1

使用word boundary

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

ワード境界は|はOR正規表現での条件、アンカーで始まること

(^|\b|\s)kh 

^であるため、特殊記号を考慮しません。 \bは単語境界です。\sはスペース文字に一致します。

Demo

関連する問題