Regex 我能';t匹配两个特定单词之间的顺序

Regex 我能';t匹配两个特定单词之间的顺序,regex,Regex,我想找到一个介于两个特定单词之间的字符串。你看我画的图案。问题是“INICIO”出现了两次,我只想让它与上次出现的“FIM”匹配。在本例中,我希望第一个模式是INICIOBBBBBFIM。我需要匹配字符串中的所有事件 也许 .*(INICIO.*?FIM) 或 一开始可能还可以 如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况 反转字符串,然后搜索 MIF.*?OICINI 然后把火柴倒过来 "JJJJJJJJJJJJ

我想找到一个介于两个特定单词之间的字符串。你看我画的图案。问题是“INICIO”出现了两次,我只想让它与上次出现的“FIM”匹配。在本例中,我希望第一个模式是INICIOBBBBBFIM。我需要匹配字符串中的所有事件

也许

.*(INICIO.*?FIM)

一开始可能还可以


如果您希望简化/修改/探索表达式,将在的右上面板中进行解释。如果您愿意,还可以在中查看它与一些示例输入的匹配情况



反转字符串,然后搜索

 MIF.*?OICINI
然后把火柴倒过来

 "JJJJJJJJJJJJJJJINICIOAAAAAAAAAAAAINICIOBBBBBBBBBBBBFIMJJJJJJJJJJJJJJINICIOJJJJJJJJJJJJJJFIM"
      .split("")
      .reverse()
      .join("")
      .match(/MIF.*?OICINI/g)[1]
      .split("")
      .reverse()
      .join("");

(注意,我实际上是在这里抓取第二根火柴。这是因为火柴的顺序也是相反的)

有点做作,但这可能奏效:

(?<=INICIO).*?(INICIO.*?FIM)|(?<=FIM).*?(INICIO.*?FIM)

(?你要找的东西听起来像Rexegg所说的a

消极前瞻“调节”dot,使其不会跳过另一个起点。这种做法与以前一样成本高昂。如果在继续操作之前没有
INICIO
,则前瞻会在每个位置进行


如果有兴趣,请详细解释。

我需要匹配两个序列。该解决方案匹配所有字符串。请将示例放在问题本身中,而不是依赖外部来源。
(?<=INICIO).*?(INICIO.*?FIM)|(?<=FIM).*?(INICIO.*?FIM)
INICIO(?:(?!INICIO).)*?FIM