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