匹配两个单词之间没有特定单词的单词

时间:2016-07-13 16:32:08

标签: regex

我需要找到两个单词的所有组合,比如fromto,在它们之间没有特定的单词,比如exclude

from
exclude
to

from
include
to

只有第二个来自 - >应该匹配。目前我可以这样做,但只是排除单个字符

from([^x]*?)to

1 个答案:

答案 0 :(得分:1)

您需要使用tempered greedy token

  

何时使用此技术
  假设我们的老板现在告诉我们,我们仍然希望匹配并包括{END},但我们还需要避免单步执行{MID}部分(如果存在)。从懒惰的点星版本开始,以确保我们匹配{END}分隔符,然后我们可以调整点以确保它不会翻转{MID}

{START}(?:(?!{MID}).)*?{END}
  

如果必须避免使用更多短语,我们只需将它们添加到我们的脾气点:

 {START}(?:(?!{MID})(?!{RESTART}).)*?{END}
  

这是一个有用的技术。

使用

from((?:(?!exclude|to|from).)*)to

如果您需要点来匹配换行符,请使用DOTALL修饰符。

请参阅regex demo

查看相关的SO thread about a tempered greedy token