获取两个最接近的单词之间的字符串

时间:2019-04-04 21:07:14

标签: javascript regex

假设我有以下字符串:

“狗猫你好猫狗狗你好猫世界”

和两个单词“ hello”和“ world”。

我想获得一个字符串,该字符串位于这些单词之间,并且两个单词之间(根据它们之间的单词数)最接近。在此示例中,以下字符串将位于这两个单词之间:

  1. “猫狗狗你好猫”
  2. “猫”

由于第二个选项中“ hello”和“ world”是最接近的,因此在此示例中,所需的结果将是“ cat”

我该如何在regEx中(以JS风格)?

我能想到的最好的是

(?<=hello\s+).*?(?=\s+world)

但这只给了我第一种选择,即“猫狗狗你好猫”

2 个答案:

答案 0 :(得分:2)

您可以使用负号提前使用此正则表达式:

/\bhello\s+((?:(?!\bhello\b).)*?)\s+world\b/

RegEx Demo

(?:(?!\bhello\b).匹配下一个位置没有世界hello的字符

答案 1 :(得分:1)

您可以在模式的开头使用.*\bhello来贪婪地消耗字符,直到最后一次出现hello为止,这样您想要的将位于捕获组中而没有{{1 }}或内部的hello

world

演示:https://regex101.com/r/FYZAdX/3