【发布时间】:2016-10-06 02:09:14
【问题描述】:
我正在尝试查找包含特定单词的句子。
我定义了一个以以下字符开头和结尾的句子:. ! ?
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 的句子时,我遇到了麻烦,因为它是句子的开头。我怎么能改变我的正则表达式来包括那个案例?我不习惯正则表达式,而且很难进入它,即使是在我眼皮底下的文档!
【问题讨论】:
-
如果你用 ,.! 定义断句?那么为什么不拆分那些字符串然后循环检查更简单的正则表达式呢?如果命中,则输出命中的句子。
-
我正在考虑这个选项,但我也想知道我是否可以在一个正则表达式中做到这一点。但我可能应该照你说的做
-
如果你想进一步实验,试试
/[^.?!]*\bhello\b[^.?!]*/ig,但这不是提取句子的有效方法,你需要一个NLP包。 -
我会听从@markg 的建议。在.?! 上拆分字符串并匹配 .*(bus).*
-
您不需要正则表达式来检查
bus,只需使用indexOf进行检查。
标签: javascript regex