Can';无法使Java正则表达式正确匹配

Can';无法使Java正则表达式正确匹配,java,regex,Java,Regex,我正在尝试创建一个正则表达式,其中必须根据字符串是否包含短语“xyz”返回布尔值,但带有句点的“xyz”不计算在内。到目前为止,我尝试的正则表达式是: str.matches("(?<!\\.)xyz"); str.matches("[^\\.]xyz") str.matches((?matches将对整个字符串进行测试(在模式周围隐式添加^和$)。快速修复方法是将*添加到模式的开头和结尾。否则,您的第一次尝试是正确的。第二次尝试将在字符串开头失败,因为它需要一个非字符(但必须有一个)

我正在尝试创建一个正则表达式,其中必须根据字符串是否包含短语“xyz”返回布尔值,但带有句点的“xyz”不计算在内。到目前为止,我尝试的正则表达式是:

str.matches("(?<!\\.)xyz");
str.matches("[^\\.]xyz")

str.matches((?
matches
将对整个字符串进行测试(在模式周围隐式添加
^
$
)。快速修复方法是将
*
添加到模式的开头和结尾。否则,您的第一次尝试是正确的。第二次尝试将在字符串开头失败,因为它需要一个非
字符(但必须有一个)

public boolean xyzThere(String str){

return str.matches(“.*”)您可以发布您正在执行此测试的字符串吗?谢谢。我想这应该很简单。这解决了我的问题。
public boolean xyzThere(String str) {
    return str.matches(".*(?<!\\.)xyz.*");
}
public boolean xyzThere(String str) {
    return java.util.regex.Pattern.compile("(?<!\\.)xyz").matcher(str).find();
}