Java正则表达式

Java正则表达式,java,regex,Java,Regex,我需要定义一个(Java)正则表达式,它将匹配任何不包含这些内容的字符串 “foo”或“foos”作为一个完整的词 “bar”或“bar”作为一个完整的词 “baz”或“baz”作为一个完整的词 是否可以将其表示为单个正则表达式?我知道使用3个单独的正则表达式会更具可读性,但如果可能的话,我希望使用一个正则表达式 谢谢, 不要给你: ^((?!\bfoos?|bars?|bazs?\b).)*$ 给你: ^((?!\bfoos?|bars?|bazs?\b).)*$ 请尝试以下操作: f

我需要定义一个(Java)正则表达式,它将匹配任何不包含这些内容的字符串

  • “foo”或“foos”作为一个完整的词
  • “bar”或“bar”作为一个完整的词
  • “baz”或“baz”作为一个完整的词
是否可以将其表示为单个正则表达式?我知道使用3个单独的正则表达式会更具可读性,但如果可能的话,我希望使用一个正则表达式

谢谢, 不要

给你:

^((?!\bfoos?|bars?|bazs?\b).)*$
给你:

^((?!\bfoos?|bars?|bazs?\b).)*$
请尝试以下操作:

final private static Pattern p = Pattern.compile(".*\\b(?:foos?|bars?|bazs?)\\b.*");
public boolean isGoodString(String stringToTest) {
  return !p.matcher(stringToTest).matches();
}
请尝试以下操作:

final private static Pattern p = Pattern.compile(".*\\b(?:foos?|bars?|bazs?)\\b.*");
public boolean isGoodString(String stringToTest) {
  return !p.matcher(stringToTest).matches();
}

@鲁本斯:那不太管用。。。中间需要一个额外的支架。目前,它与
\b oos?
条?
bazs?\b
@Paul匹配,我使用和ECMAScript、多行标志测试了它;您能确认吗?scala>“test foobar.”匹配(“.*(:\\bfoos?| bars?| bazs\\b)。*”;res17:Boolean=true——这应该返回false,因为单词foo和单词bar不在字符串中。scala>“测试foobar”。匹配(.*(:\\b(?:foos?| bar?| baz)\\b)。*);res2:Boolean=false——很抱歉格式不好,但您无法真正格式化注释……哦,还有它不起作用的原因<代码>的关联性低于串联,即第一个
\b
绑定到
foos?
,因此您正在匹配
\bfoos?
条?
baz?\b'。插入额外的括号会将其分解,以便匹配(
foos?
bar?)或(
baz?
)后接
\b`@Rubens:这不太有效。。。中间需要一个额外的支架。目前,它与
\b oos?
条?
bazs?\b
@Paul匹配,我使用和ECMAScript、多行标志测试了它;您能确认吗?scala>“test foobar.”匹配(“.*(:\\bfoos?| bars?| bazs\\b)。*”;res17:Boolean=true——这应该返回false,因为单词foo和单词bar不在字符串中。scala>“测试foobar”。匹配(.*(:\\b(?:foos?| bar?| baz)\\b)。*);res2:Boolean=false——很抱歉格式不好,但您无法真正格式化注释……哦,还有它不起作用的原因<代码>
的关联性低于串联,即第一个
\b
绑定到
foos?
,因此您正在匹配
\bfoos?
条?
baz?\b'。插入额外的括号会将其分开,以便您匹配
\b`,然后是(
foos?
bar?,或
baz?
),然后是
\b`