我正在尝试编写一个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'。它应该只在开头而不是在单词的中间找到。
答案 0 :(得分:1)
Pattern.compile(("\\bkh(\\w)"), Pattern.CASE_INSENSITIVE);
^^
Word边界不会考虑特殊符号,因为
(^|\b|\s)kh
^
以锚点开头,|
在正则表达式中是OR条件。 \b
是单词边界,\s
与空格字符匹配。