我正在创建一个以自然语言为输入的机器人。例如,我希望从用户的输入中找到"árbol“或"carbón”的单词。
它必须是不区分大小写和口音不敏感。它必须在句子的任何地方找到单词。
示例:
arbol -(应该检测到) caRbóN (应检测) 红葡萄酒-(应该检测到) RBOL-(应该检测)
当我想检测句子中的单词时,问题就来了。不得发生下列情况:
Eso es un(不应检测) 厄尔波拉-(不应该探测)
使用regex,我有以下内容:
/(á+)rb(o+)l|c(a+)rb(ó+)n|(a+)rb(o+)l|c(a+)rb(o+)n/i我知道我必须使用\s才能有一个空格,但当我尝试这样做时:
/(\s)(á+)rb(o+)l|c(a+)rb(ó+)n|(\s)(a+)rb(o+)l|c(a+)rb(o+)n/i例如,如果我只有以下几个词,它就不会检测到这个词:
阿波
我只会发现
联合国阿波
最后,是否有一种更容易的方法来考虑所有重音词,而不是把这两种情况都放在一起呢?
发布于 2017-11-01 18:28:36
使用word边界\b而不是\s,这也将检查第一个/最后一个字符。
匹配一个单词边界。一个词的边界匹配的位置,一个字字符没有后面或前面的另一个词-字符。请注意,匹配的单词边界不包括在匹配中。换句话说,匹配的单词边界的长度为零。(不要混淆\b.)
发布于 2017-11-01 18:55:32
我的代码的整个解决方案是:
/\b(á+|a+)rb(o+)l\b|\bc(a+)rb(ó+|o+)n\b/ihttps://stackoverflow.com/questions/47061373
复制相似问题