如何捕获可能被空白包围的整个单词

问题描述 投票:1回答:1

我已经尝试过以下表达式的各种表述,并且在以下表达式中获得最大的成功。本质上,我想将其插入.match()并捕获所有以句子开头,出现在句子中(两边都是空格)或结尾句子的单词。例如,在句子“这个问题很无聊”中,我可能想要“ This”,“ is”和“ bore”,但不希望在“ bore”中间的“ or”或“ this”中的“ is” ”。我正在宽松地使用“句子”,因为它被应用于标题,锚标签,p标签等。

我设法只得到整个单词,但我没有得到所有想要的单词。例如,尽管“ and”被拾起,但“ and”却被跳过,尽管两者都位于用空格包围的句子中间。有关于改进的想法吗?

var exp = /\band|\bthe|\bor|\bwhich|\bon|\babout|\bmovies|\btomatoes|\breddit|\bplayed/gi;
javascript regex
1个回答
2
投票

要求“可能被空白包围或可能不被空白包围”意味着您甚至不需要检查空白(无关紧要)。您所追求的是匹配包含列表中任何替代项的单词。

使用类似样式

\w*(?:and|the|or|which|on|about|movies|tomatoes|reddit|played)\w*

请参见regex demo

此处,\w*两端的non-capturing group匹配0+个字符字符(ASCII字母,数字或_字符)。

JS演示:

var exp = /\w*(?:and|the|or|which|on|about|movies|tomatoes|reddit|played)\w*/gi;
var s = "This question is a bore,";
console.log(s.match(exp));
© www.soinside.com 2019 - 2024. All rights reserved.