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()); 

То, что я хочу, это должно найти 'Kh' от Khan и не из Shakhir. Он должен найти только в начале и не в середине слова.

ответ

1

Использование word boundary

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

граница слова не будет рассматривать специальные символы, для этого

(^|\b|\s)kh 

^ является начинается с якорем, | является OR условия в регулярном выражении. \b - граница слова, \s соответствует символам пробела.

Demo

Смежные вопросы