我想查看文本以查看它是以什么或谁开头,并且是一个问题类型,所以为此我编写了以下代码:
class B;
class A{
public:
A(B b);
};
class B{
public:
B(A a);
};
一切都很好但是例如当我尝试时:
private static void startWithQOrIf(String commentstr){
String urlPattern = "(|who|what).*\\?.*$";
Pattern p = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(commentstr);
if (m.find()) {
System.out.println("yes");
}
}
也会匹配,但不应该因为我正在寻找谁不是whooooooooo
有什么想法吗?
答案 0 :(得分:4)
您可以使用字边界\b
确保整个单词:
(|who|what)\\b.*\\?.*$
^^
如果交替组中的单词应该出现在字符串的开头,您只需使用matches
并删除$
锚点:
String urlPattern = "(|who|what)\\b.*\\?.*";
Pattern p = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(commentstr);
if (m.matches()) { // < - Here, matches is used
System.out.println("yes");
}
请注意(|who|what)
匹配空字符串,who
或what
。如果您不打算允许空字符串,请仅使用(who|what)
。
答案 1 :(得分:3)
您必须使用字边界。
String urlPattern = "\\b(who|what)\\b.*\\?.*$";