在java中使用正则表达式匹配确切的单词

时间:2012-07-26 04:50:34

标签: java regex

我需要一个正则表达式来匹配一个确切的单词。

例如:

有一个字符串"draft guidance allerg Excellence",我想搜索allerg,然后我写了\ballerg\b。它给了我完全匹配。但是当我将字符串作为"draft guidance 12=allerg Excellence"传递时,它也会返回true,但这是错误的。

我需要哪个正则表达式才能匹配精确的单词?

2 个答案:

答案 0 :(得分:6)

\b边界通常会处理这种情况,即使在"draft guidance 12=allerg Excellence"的情况下也是如此。但是,你说=是这个词的一部分(在普通英语中,情况并非如此)。

我假设那个“整个单词”,你的意思是一个被空格或正常句子标点符号包围的单词。在这种情况下,如下所示的正则表达式应该起作用:

(?:^|[\s\.;\?\!,])allerg(?:$|[\s\.;\?\!,])

显然,您可以根据需要添加或删除字符。

正则表达式解释:

(?:                     # non-matching group
    ^                   # beginning of string
    | [\s\.;\?\!,]      # OR a space, period, and other misc. punctuation
)
allerg                  # string to match
(?:                     # non-matching group
    $                   # end of string
    | [\s\.;\?\!,]      # OR a space, period, and other misc. punctuation
)

答案 1 :(得分:-1)

如果我正确理解了这个问题,你想要匹配一个单词“allerg”。一个单词用空格字符括起来,“= allerg”有“=”字符,你不想匹配。

要匹配“allerg”这个词,您可以使用以下正则表达式:

\s+allerg\s+