RegEx检查单词是否以搜索字符

时间:2016-10-27 04:58:33

标签: java 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 个答案:

答案 0 :(得分:1)

使用word boundary

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

Word边界不会考虑特殊符号,因为

(^|\b|\s)kh

^以锚点开头,|在正则表达式中是OR条件。 \b是单词边界,\s与空格字符匹配。

Demo