首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有当一个单词不是较长的单词的一部分时,才能检测到一个单词?

只有当一个单词不是较长的单词的一部分时,才能检测到一个单词?
EN

Stack Overflow用户
提问于 2012-05-16 16:40:12
回答 3查看 82关注 0票数 1

我正在寻找一个正则表达式,它只匹配一个单词,而不是一个更长的单词的一部分。

让我们假设这个词是“失败”,下面是一些例子

  • failure bla bla -应该是match
  • bla failure. -应该是match
  • no-failure bla -不应该匹配

主要的是,failure字符串不需要在其周围有任何[\d\w-_],这样才能被视为一部分。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-16 16:47:46

由于在构成单词的字符组中包含了破折号,所以不能使用单词边界;您需要查找周围的断言(Java支持这些断言):

代码语言:javascript
运行
复制
(?<![\w-])failure(?![\w-])

应该这么做。

解释:

代码语言:javascript
运行
复制
(?<![\w-])  # Assert no alphanumeric or dash before the current position
failure     # Match "failure"
(?![\w-])   # Assert no alphanumeric or dash after the current position
票数 2
EN

Stack Overflow用户

发布于 2012-05-16 16:42:43

如果您的regex风格支持它,您可以使用\b来匹配一个单词中断,例如/\bfailure\b/

票数 1
EN

Stack Overflow用户

发布于 2012-05-16 18:40:15

对Regex来说不是个好案子。

为什么不将其分解为单词,然后将每个单词与您的目标进行比较(因为您要说的是,只有在被空格隔离的情况下,它才能匹配)。

嗯,String.split确实使用Regex,但是它更受控制,您实际上只需要在空间上使用默认的拆分,或者您可能需要添加句点(因此您的第二个示例将匹配)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10622934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档