Javascript 正则表达式查找最短匹配语句

Javascript 正则表达式查找最短匹配语句,javascript,regex,Javascript,Regex,我有一句话“在2082年,他觉得房间不断失去焦点,没有梗塞” 我将获得需要提取的句子的开头和结尾。例如:-开始->进入。结束->梗死 我想摘录“2082年,没有梗塞” 我尝试了regexstr.match(/\bin\b.*?\binfarcts\b/) 我得到了完整的句子“在2082年,他觉得房间一直在失去焦点,没有梗塞”,而不是“在2082年,没有梗塞”如果不是在句子的开头,你可以使用正则表达式在中添加一个负向查找: str.match(/(?如果不在句首,您可以使用正则表达式在中添加一个反

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

我将获得需要提取的句子的开头和结尾。例如:-开始->进入。结束->梗死

我想摘录“2082年,没有梗塞”

我尝试了regex
str.match(/\bin\b.*?\binfarcts\b/)


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

如果不是在句子的开头,你可以使用正则表达式在
中添加一个负向查找:


str.match(/(?

如果
不在句首,您可以使用正则表达式在
中添加一个反向查找来查找


str.match(/(?

这里有一种方法,正则表达式在句子中的
单词中找到最后一个
,然后在该单词之后获取所有内容,直到找到一个
单词

var str='在其中,他感觉房间在2082年不断失去焦点,没有梗塞'

console.log(str.match(/(\bin\b)(?!.\b\1\b.*infacts/)[0])
这里有一种方法,正则表达式在句子中的
单词中找到最后一个
,然后在找到
infacts
单词后再进行所有操作

var str='在其中,他感觉房间在2082年不断失去焦点,没有梗塞'

console.log(str.match(/(\bin\b)(?!.*\b\1\b)。*梗死/)[0])
非贪婪匹配不会跳过生成匹配所需的更多文本,但它仍会找到字符串中最左边的位置,以便进行匹配。如果要将其向右推,可以在捕获匹配之前尽可能多地跳过另一个前缀

str.match(/.*(\bin\b.*?\binfarcts\b)/)[1]

注意
[1]
以拉出第一个括号内的子组。

非贪婪匹配不会跳过生成匹配所需的更多文本,但它仍会找到字符串中最左边的可能匹配位置。如果要将其向右推,可以在捕获匹配之前尽可能多地跳过另一个前缀

str.match(/.*(\bin\b.*?\binfarcts\b)/)[1]

注意
[1]
拉出第一个括号中的子组。

斜杠分隔符肯定需要放在后面看之前?但这可能太具体了,实际不太有用。编辑了分隔符,但不确定它是否太具体,因为OP没有真正给出一条规则,只有一个示例需要捕获斜杠分隔符必须放在后面re the lookbehind?但这可能太具体了,实际不太有用。我编辑了分隔符,不确定它是否太具体,因为OP没有真正给出一个规则,只有一个示例需要捕获。这个答案适用于所有情况。谢谢。如果我在chrome控制台中直接使用此函数,它工作正常。如果我创建一个字符串s1 for.“*(\bin\b.*?\binfarcts\b)”表达式并使用新的RegExp(s1)创建正则表达式并运行str.match。它不起作用。请您也帮个忙好吗?对不起,不是一个喜欢JavaScript的人。也许可以发布一个关于这个问题的单独问题。这个答案适用于所有问题。谢谢。如果我在chrome控制台中直接使用这个函数,它工作正常。如果我为“*(\bin\b.*?\binfarcts\b)”创建一个字符串s1表达式并使用新的RegExp(s1)创建一个regex,然后运行str.match。它不起作用。请您也提供帮助。对不起,不是很多JavaScript人员。可能会发布一个单独的问题。