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