使用正则表达式获取包含特定单词的句子

Get sentence containing specific word with regex

本文关键字:单词 句子 包含特 正则表达式 获取      更新时间:2023-09-26

我正在寻找包含特定单词的句子。我定义了一个以以下字符开头和结尾的句子:. ! ?

var str = "Hello, how is it going. This is the bus we have to take!";
var regex = /[^.?!]*(?:[.?,'s!])(bus)(?=['s.?!,])[^.?!]*[.?!]/igm;
var result = regex.exec(str);

output : `This is the bus we have to take!`

现在,当我试图找到包含单词hello的句子时,我遇到了麻烦,因为它是句子的开头。我怎么能改变我的正则表达式,以包括这种情况?我不习惯正则表达式,而且很难进入它,即使有文档在我的眼皮底下!

请记住,将文本分割成语言学句子是一项非常具体、困难的任务,通常需要NLP包的帮助才能完成。

如果你想限制在你定义的句子后面的特定字符串:

  • 拆分/[.?!]/ regex
  • 检查条目是否包含RegExp#test()子字符串,因为您需要不区分大小写的检查

var str = "Hello, how is it going. This is the bus we have to take!";
var chunks = str.split(/[.?!]/).filter(function(n) {
  return /hello/i.test(n);
});
console.log(chunks);

请注意,要检查整个单词,您可以根据进一步的要求使用/'bhello'b/i/(?:^|'s)hello(?!'S)/i regexp。