我需要找到两个单词的所有组合,比如from
和to
,在它们之间没有特定的单词,比如exclude
from
exclude
to
from
include
to
只有第二个来自 - >应该匹配。目前我可以这样做,但只是排除单个字符
from([^x]*?)to
答案 0 :(得分:1)
您需要使用tempered greedy token:
何时使用此技术
假设我们的老板现在告诉我们,我们仍然希望匹配并包括{END},但我们还需要避免单步执行{MID}
部分(如果存在)。从懒惰的点星版本开始,以确保我们匹配{END}
分隔符,然后我们可以调整点以确保它不会翻转{MID}
:
{START}(?:(?!{MID}).)*?{END}
如果必须避免使用更多短语,我们只需将它们添加到我们的脾气点:
{START}(?:(?!{MID})(?!{RESTART}).)*?{END}
这是一个有用的技术。
使用
from((?:(?!exclude|to|from).)*)to
如果您需要点来匹配换行符,请使用DOTALL修饰符。
请参阅regex demo