假设我有以下字符串:
“狗猫你好猫狗狗你好猫世界”
和两个单词“ hello”和“ world”。
我想获得一个字符串,该字符串位于这些单词之间,并且两个单词之间(根据它们之间的单词数)最接近。在此示例中,以下字符串将位于这两个单词之间:
由于第二个选项中“ hello”和“ world”是最接近的,因此在此示例中,所需的结果将是“ cat” 。
我该如何在regEx中(以JS风格)?
我能想到的最好的是
(?<=hello\s+).*?(?=\s+world)
但这只给了我第一种选择,即“猫狗狗你好猫”
答案 0 :(得分:2)
您可以使用负号提前使用此正则表达式:
/\bhello\s+((?:(?!\bhello\b).)*?)\s+world\b/
(?:(?!\bhello\b).
匹配下一个位置没有世界hello
的字符
答案 1 :(得分:1)
您可以在模式的开头使用.*\bhello
来贪婪地消耗字符,直到最后一次出现hello
为止,这样您想要的将位于捕获组中而没有{{1 }}或内部的hello
:
world