首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用regex找到一个单词?

如何使用regex找到一个单词?
EN

Stack Overflow用户
提问于 2017-11-01 18:26:20
回答 2查看 49关注 0票数 0

我正在创建一个以自然语言为输入的机器人。例如,我希望从用户的输入中找到"árbol“或"carbón”的单词。

它必须是不区分大小写和口音不敏感。它必须在句子的任何地方找到单词。

示例:

arbol -(应该检测到) caRbóN (应检测) 红葡萄酒-(应该检测到) RBOL-(应该检测)

当我想检测句子中的单词时,问题就来了。不得发生下列情况:

Eso es un(不应检测) 厄尔波拉-(不应该探测)

使用regex,我有以下内容:

代码语言:javascript
复制
/(á+)rb(o+)l|c(a+)rb(ó+)n|(a+)rb(o+)l|c(a+)rb(o+)n/i

我知道我必须使用\s才能有一个空格,但当我尝试这样做时:

代码语言:javascript
复制
/(\s)(á+)rb(o+)l|c(a+)rb(ó+)n|(\s)(a+)rb(o+)l|c(a+)rb(o+)n/i

例如,如果我只有以下几个词,它就不会检测到这个词:

阿波

我只会发现

联合国阿波

最后,是否有一种更容易的方法来考虑所有重音词,而不是把这两种情况都放在一起呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-01 18:28:36

使用word边界\b而不是\s,这也将检查第一个/最后一个字符。

匹配一个单词边界。一个词的边界匹配的位置,一个字字符没有后面或前面的另一个词-字符。请注意,匹配的单词边界不包括在匹配中。换句话说,匹配的单词边界的长度为零。(不要混淆\b.)

Expressions#special-word-boundary

票数 2
EN

Stack Overflow用户

发布于 2017-11-01 18:55:32

我的代码的整个解决方案是:

代码语言:javascript
复制
/\b(á+|a+)rb(o+)l\b|\bc(a+)rb(ó+|o+)n\b/i
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47061373

复制
相关文章

相似问题

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