我正在寻找一个只与一个单词相匹配的正则表达式,它不是一个较长单词的一部分。
让我们假设这个词是'失败',所以这里有一些例子
failure bla bla
- 应匹配bla failure.
- 应匹配no-failure bla
- 不应该匹配主要failure
字符串不需要围绕它[\d\w-_]
才能被视为部分
答案 0 :(得分:2)
如果您的正则表达式支持它,您可以使用\b
来匹配分词,例如/\bfailure\b/
。
答案 1 :(得分:2)
由于您将短划线包含在构成单词的字符组中,因此您无法使用单词边界进行操作;你需要外观断言(Java支持):
(?<![\w-])failure(?![\w-])
应该这样做。
<强>解释强>
(?<![\w-]) # Assert no alphanumeric or dash before the current position
failure # Match "failure"
(?![\w-]) # Assert no alphanumeric or dash after the current position
答案 2 :(得分:0)
正则表达式不是一个很好的例子。
为什么不把String.split分解为单词,然后将每个单词与你的目标进行比较(因为你所说的只有在空格隔离时它才匹配)。
嗯,String.split使用正则表达式,但它更受控制,你真的只需要空间的默认分割,或者你想要添加句点(所以你的第二个例子会匹配)。