2016-10-27 10 views
2

Ich versuche eine RegEx zu schreiben, um Wörter zu finden, die mit meinem Suchtext beginnen.RegEx, um zu prüfen, ob Wort mit Suchzeichen beginnt

Wenn ich laufe dieses Programm, das ich folgende Ausgabe:

wahren Beginn: 3 Ende: 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()); 

Was ich will, ist, sollte es Kh 'von Khan und nicht von Shakhir finden. Es sollte nur am Anfang und nicht in der Mitte des Wortes finden.

Antwort

1

Verwenden word boundary

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

Wortgrenze nicht berücksichtigt spezielle Symbole für die

(^|\b|\s)kh 

^ ist mit Anker beginnt, | OR Zustand in regex. \b ist Wortgrenze, \s entspricht Leerzeichen.

Demo

Verwandte Themen