正则表达式匹配整个单词OR运算符

时间:2012-07-11 22:02:59

标签: java regex

我试图匹配某些行的完整单词,想知道如何在正则表达式中使用OR, 如果我只使用一个关键字,它可以正常工作。例如,

regex = ".*\\b" + "KEYWORD1" + "\\b.*";


String regex = ".*\\b" + "KEYWORD1|KEYWORD2|KEYWORD3" + "\\b.*";

    for (int i = start; i < end; i++) {           
        if (lines[i].matches(regex)) {
            System.out.println("Matches");
        }
    }

2 个答案:

答案 0 :(得分:8)

你想:

String regex = ".*\\b(KEYWORD1|KEYWORD2|KEYWORD3)\\b.*";

最初,你的正则表达式正在进行评估:

.*\bKEYWORD1
|
KEYWORD2
|
KEYWORD3\b.*

但你想要:

.*\b
(
    KEYWORD1
    |
    KEYWORD2
    |
    KEYWORD3
)
\b.*

这个很酷的tool可以帮助您分析正则数据并找到像这样的错误。

答案 1 :(得分:2)

管道符|可以用作OR运算符,在正则表达式中称为交替。

要在您的示例中使其正常工作,您只需要在轮换周围创建一个组,以确保您只对您感兴趣的关键字执行OR,例如:

String regex = ".*\\b(KEYWORD1|KEYWORD2|KEYWORD3)\\b.*";

您目前拥有的内容是.*\\bKEYWORD1 OR KEYWORD2 OR KEYWORD3\\b.*