使用javascript从给定单词向后匹配

使用javascript从给定单词向后匹配,javascript,regex,string,Javascript,Regex,String,使用Javascript,我需要在一些文本中找到一个短语的匹配项,然后匹配从它到最后一个5位数的匹配项。(或者至少这是我知道如何描述我需要的最好方式) 考虑以下文本: 24854 随机词 结束语 34975 随机词 结束语 47593 随机词 结尾词 目标词 32302 随机词 结束语 鉴于上述情况,我希望我的正则表达式能够匹配从47593到目标词的所有内容 每个匹配项都应包括47593和目标词 它需要贪婪,因为在我的实际文本中将有多个匹配项,并且我需要将它们全部返回到一个数组中 这就是

使用Javascript,我需要在一些文本中找到一个短语的匹配项,然后匹配从它到最后一个5位数的匹配项。(或者至少这是我知道如何描述我需要的最好方式)

考虑以下文本:


24854

随机词

结束语

34975

随机词

结束语

47593

随机词

结尾词

目标词

32302

随机词

结束语


  • 鉴于上述情况,我希望我的正则表达式能够匹配从
    47593
    目标词的所有内容
    
  • 每个匹配项都应包括
    47593
    目标词
  • 它需要贪婪,因为在我的实际文本中将有多个匹配项,并且我需要将它们全部返回到一个数组中
这就是我所尝试的:
.match(/[0-9]{5}[\s\s]+?目标词/g)

我的问题(和以往一样)是新线。为了跨多行匹配,我使用了
[\s\s]
,但这样做会使正则表达式匹配所有内容,从第一个5位数到第一个出现的
目标词


我如何改变这一点以达到预期的结果?我想我需要使用lookback,但我发现的大多数例子对我来说都很困惑

您可以使用负前瞻

[0-9]{5}(?:(?![0-9]{5})[\S\s])*?Target\s*Word


上面的负前瞻
(?:(?![0-9]{5})[\S\S])*
断言在5位数字之后,匹配任何空格或非空格字符0次或多次,但它不能是5位数字

您可以使用负前瞻

[0-9]{5}(?:(?![0-9]{5})[\S\s])*?Target\s*Word


上面的负前瞻
(?:(?![0-9]{5})[\S\S])*
断言在5位数字之后,匹配任何空格或非空格字符0次或多次,但它不能是5位数字

如果随机单词中没有5位数的模式,您可以使用

/([\d]{5}(?:[^\d]{5})+?Target Word)/gm

如果随机单词中没有5位数的模式,您可以使用

/([\d]{5}(?:[^\d]{5})+?Target Word)/gm


也许把
[\s\s]+?
改成
[\s\s]*
,这样它就不会贪婪了?@Ian是的,也试过了,从第一次开始就匹配了,谢谢,但对不起,我应该试一下(我现在正在做)@Ian
[\s\s]+?
是的lazy@Spooky正当但是我认为它可能会以不同于
*
-的方式表现出懒惰-我不知道为什么我会这样想,也许会把
[\s\s]+?
变成
[\s\s]*
,这样它就不贪婪了?@Ian是的,也试过了,还是从第一次开始匹配,谢谢你,抱歉,我应该试一下(我现在正在做)@Ian
[\s\s]+?
lazy@Spooky是的,但我认为它可能会以不同于
*
的方式表现出懒惰-我不知道为什么我会这样想,但不幸的是,
随机词
可以包含几乎任何字符,包括新行,我没有投反对票,但是在你的第一个字符类中使用
\d
怎么样?@DelightedD0D同样更新了,我希望不可能匹配随机单词中的5位模式。这是谁的下一票?想解释一下吗?这个答案在其他情况下也是有效的。因此,这个答案可能会帮助那些有类似问题的人,尽管这个问题符合答案开头给出的标准。我希望否决投票至少需要一句话……踢某人然后一言不发地走开会有多大帮助?不幸的是,
Random words
可以包含几乎任何字符,包括新行。我没有向下投票,但是在您的第一个字符类中使用
\d
怎么样?@delighteddod更新了相同的内容,我希望不可能匹配随机字中的5位模式。这是谁的向下投票?想解释一下吗?这个答案在其他情况下也是有效的。因此,这个答案可能会帮助那些有类似问题的人,尽管这个问题符合答案开头给出的标准。我基达希望降级投票至少需要一句话……踢某人然后一言不发地走开有多大帮助?对不起,那是我,我在试图接受你的答案时滑倒了(它不会让我多做5分钟),这对我来说很有效,谢谢!我把我的票投了回去,不知道另一个来自哪里,也不知道为什么,奇怪的是,那是我,我在试图接受你的答案时滑倒了(它不会让我多做5分钟),这对我有用,谢谢!我把我的投了赞成票,不知道另一个是从哪里来的,为什么,奇怪