Java 用于检查单词是否以搜索字符开头的正则表达式

Java 用于检查单词是否以搜索字符开头的正则表达式,java,regex,Java,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());

我试图写一个正则表达式来查找以搜索文本开头的单词

当我运行此程序时,我得到以下输出:

真正开始: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
中找到“Kh”,而不是从
Shakhir
中找到。它应该只出现在单词的开头,而不是中间。

使用

词边界不会考虑特殊符号,对于

(^|\b|\s)kh
^
以锚点开头,
|
是正则表达式中的或条件
\b
是单词边界,
\s
匹配空格字符

(^|\b|\s)kh