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