Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式if行不包含关键字_Java_Regex - Fatal编程技术网

Java 正则表达式if行不包含关键字

Java 正则表达式if行不包含关键字,java,regex,Java,Regex,如何设置表达式以发现输入字符串中不存在关键字? 关键词:鸡蛋,培根,奶酪 功能是: if (!line.matches("eggs") || !line.contains("bacon")|| !line.contains("cheese") ) { match=line; } return matchregex; 对于正则表达式,可以从 也可以尝试一下你的模式。它将允许您快速查看其行为 公共静态布尔匹配字符串正则表达式, 字符序列输入 编译给

如何设置表达式以发现输入字符串中不存在关键字? 关键词:鸡蛋,培根,奶酪

功能是:

    if (!line.matches("eggs") || !line.contains("bacon")|| !line.contains("cheese") )
    {
        match=line;
    }

    return matchregex;

对于正则表达式,可以从

也可以尝试一下你的模式。它将允许您快速查看其行为

公共静态布尔匹配字符串正则表达式, 字符序列输入

编译给定的正则表达式并尝试匹配给定的 针对它的输入

对表单的这个方便方法的调用

 Pattern.matches(regex, input);
其行为方式与表达式完全相同

 Pattern.compile(regex).matcher(input).matches()
如果一个模式要被多次使用,编译它一次,然后 重用它将比每次调用此方法更有效

参数:

regex-要编译的表达式 输入-要匹配的字符序列 返回:

正则表达式是否与输入匹配 抛出:

PatternSyntaxException-如果表达式的语法无效
对于正则表达式,可以从

也可以尝试一下你的模式。它将允许您快速查看其行为

公共静态布尔匹配字符串正则表达式, 字符序列输入

编译给定的正则表达式并尝试匹配给定的 针对它的输入

对表单的这个方便方法的调用

 Pattern.matches(regex, input);
其行为方式与表达式完全相同

 Pattern.compile(regex).matcher(input).matches()
如果一个模式要被多次使用,编译它一次,然后 重用它将比每次调用此方法更有效

参数:

regex-要编译的表达式 输入-要匹配的字符序列 返回:

正则表达式是否与输入匹配 抛出:

PatternSyntaxException-如果表达式的语法无效
匹配鸡蛋、培根或奶酪的正则表达式为:

(eggs|bacon|cheese)
您需要检测行不匹配的情况,这样您就可以消除如下情况:

if (!line.matches("(eggs|bacon|cheese)") {
    // Do something
}
这与整条线相匹配。如果要判断该行是否包含这些单词中的任何一个,则需要使用.*来匹配该行的其余部分,或者使用Pattern和Matcher进行不同的匹配

我会使用:\b来标记单词边界,以确保您只匹配奶酪而不匹配奶酪蛋糕

或者:

if (!line.matches(".*\\b(eggs|bacon|cheese)\\b.*")) {
    // Do something
}

必须将反斜杠加倍才能在字符串中转义。

匹配鸡蛋、培根或奶酪的正则表达式是:

(eggs|bacon|cheese)
您需要检测行不匹配的情况,这样您就可以消除如下情况:

if (!line.matches("(eggs|bacon|cheese)") {
    // Do something
}
这与整条线相匹配。如果要判断该行是否包含这些单词中的任何一个,则需要使用.*来匹配该行的其余部分,或者使用Pattern和Matcher进行不同的匹配

我会使用:\b来标记单词边界,以确保您只匹配奶酪而不匹配奶酪蛋糕

或者:

if (!line.matches(".*\\b(eggs|bacon|cheese)\\b.*")) {
    // Do something
}

您必须将反斜杠加倍才能在字符串中转义。

到目前为止您尝试了什么?我尝试了:1。如果line.containseggs | |!行。包含空格| | |!line.containscheese//2。如果line.toLowerCase.matches.*?奶酪:.*.|。*?鸡蛋:.*//3。在过去的两天里,我试图找到一些例子//4.我注意到如果!line.containseggs可以工作,但是如果我尝试添加更多的单词,它将完全不起作用,并且完全忽略我的关键字。看看这个,将代码放入一个方法中,使用该方法返回其结果的相反部分。旁注:仅为了检查这三个单词,我不建议使用正则表达式。在这种情况下,查找文本的常用字符串方法更快。@Sascha有趣的是,您认为原始性能是该项目的关键因素吗?:-到目前为止你试过什么?我试过:1。如果line.containseggs | |!行。包含空格| | |!line.containscheese//2。如果line.toLowerCase.matches.*?奶酪:.*.|。*?鸡蛋:.*//3。在过去的两天里,我试图找到一些例子//4.我注意到如果!line.containseggs可以工作,但是如果我尝试添加更多的单词,它将完全不起作用,并且完全忽略我的关键字。看看这个,将代码放入一个方法中,使用该方法返回其结果的相反部分。旁注:仅为了检查这三个单词,我不建议使用正则表达式。在这种情况下,查找文本的常用字符串方法更快。@Sascha有趣的是,您认为原始性能是该项目的关键因素吗?:-嗯,这不也适用于smeggs吗?不,对于第一个例子,整个生产线必须与鸡蛋完全匹配。对于后面的示例,我使用\b表示必须有一个单词边界
-阿尔法或线尾。嗯,这不也适用于SMEGG吗?不,对于第一个例子,整个线必须完全匹配鸡蛋。对于后面的示例,我使用\b表示必须有一个非字母或行尾的单词边界。