首页 > 解决方案 > 正则表达式查找最短匹配句子

问题描述

我有一句话“他觉得房间在2082年不断失焦,没有梗塞”

我将得到需要提取的句子的开头和结尾。例如:- 开始 -> 在。结束 -> 梗塞

我想提取句子“在 2082 年,没有梗塞”

我尝试了正则表达式str.match(/\bin\b.*?\binfarcts\b/)

我得到了完整的句子“他觉得房间在 2082 年不断失焦,没有梗塞”而不是“在 2082 年,没有梗塞”

标签: javascriptregex

解决方案


这是执行此操作的一种方法,正则表达式查找in句子中的最后一个单词,然后获取之后的所有内容,直到找到一个infarcts单词。

var str = 'in which he felt that the room was constantly going out of focus in 2082, no infarcts'

console.log(str.match(/(\bin\b)(?!.*\b\1\b).*infarcts/)[0])


推荐阅读