您将如何设置表达式以发现关键字在输入字符串中不存在? 关键词是:鸡蛋,培根,奶酪
功能是:
EXISTS
答案 0 :(得分:4)
匹配鸡蛋,培根或奶酪的正则表达式为:
(eggs|bacon|cheese)
您需要检测行何时不匹配,以便可以消除这种情况:
if (!line.matches("(eggs|bacon|cheese)") {
// Do something
}
这与整行匹配。如果要确定行是否包含这些单词中的任何一个,则需要进行不同的匹配-使用.*
来匹配行的其余部分,或者使用Pattern
和Matcher
。
我将使用:\b
标记单词边界,以确保您仅匹配cheese
而不匹配cheesecake
。
Pattern pattern = Pattern.compile("\\b(eggs|bacon|cheese)\\b");
Matcher matcher = pattern.matcher(line);
if (!matcher.find()) {
// Do something
}
或者:
if (!line.matches(".*\\b(eggs|bacon|cheese)\\b.*")) {
// Do something
}
您必须加倍反斜杠才能将它们转义到字符串中。
答案 1 :(得分:0)
对于正则表达式,Java documentation中提供了相当不错的描述
也请尝试使用此website来尝试您的模式。它可以让您快速查看其行为。
公共静态布尔匹配项(字符串正则表达式, CharSequence输入)
编译给定的正则表达式并尝试匹配给定的 输入反对。
对此形式的便捷方法的调用
Pattern.matches(regex, input);
表现与表达式完全相同
Pattern.compile(regex).matcher(input).matches()
如果要多次使用某个模式,请编译一次,然后 重用它比每次调用此方法都更有效率。
参数:
- regex-要编译的表达式
- 输入-要匹配的字符序列
返回:
- 正则表达式在输入中是否匹配
投掷:
- PatternSyntaxException-如果表达式的语法无效