两个模式之间的单个分隔符的正则表达式

Regex for single delimiter between two patterns

给定一个像 @1=A1@2=A2@3=A3>>@1=B1@2=B2@3=B3>>@1=C1@2=C2@3=C3>>@1=D1@2=D2@3=D3 这样的输入,我想匹配 @2=A2 和 @2=B2,使得它们之间只有一个 >>

我尝试了正则表达式 (?!@2=A2.*>>.*>>.*@2=B2)@2=A2@.*>>.*@2=B2

这正确地识别了像这样的输入 @1=A1@2=A2@3=A3>>@1=B1@2=B2@3=B3>>@1=C1@2=C2@3=C3>>@1=D1@2=D2@3=D3 并且也忽略输入 @1=A1@2=A2@3=A3>>@1=C1@2=C2@3=C3>>@1=B1@2=B2@3=B3>>@1=D1@2=D2@3=D3(@2=B2 在@2=A2 之后,但@2=C2 在两者之间。)。

但是,它在 @1=A1@2=A2@3=A3>>@1=B1@2=B2@3=B3>>@1=B1@2=B2@3=B3>>@1=D1@2=D2@3=D3 这样的输入上失败。

怎么样:

@2=A2[^>]*>>[^>]*@2=B2

DEMO

解释:

@2=A2       # literally
[^>]*       # 0 or more any character that is not >
>>          # literally
[^>]*       # 0 or more any character that is not >
@2=B2       # literally