我正在寻找一个正则表达式,它只匹配一个单词,而不是一个更长的单词的一部分。
让我们假设这个词是“失败”,下面是一些例子
failure bla bla -应该是matchbla failure. -应该是matchno-failure bla -不应该匹配主要的是,failure字符串不需要在其周围有任何[\d\w-_],这样才能被视为一部分。
发布于 2012-05-16 16:47:46
由于在构成单词的字符组中包含了破折号,所以不能使用单词边界;您需要查找周围的断言(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发布于 2012-05-16 16:42:43
如果您的regex风格支持它,您可以使用\b来匹配一个单词中断,例如/\bfailure\b/。
发布于 2012-05-16 18:40:15
对Regex来说不是个好案子。
为什么不将其分解为单词,然后将每个单词与您的目标进行比较(因为您要说的是,只有在被空格隔离的情况下,它才能匹配)。
嗯,String.split确实使用Regex,但是它更受控制,您实际上只需要在空间上使用默认的拆分,或者您可能需要添加句点(因此您的第二个示例将匹配)。
https://stackoverflow.com/questions/10622934
复制相似问题