两个模式之间的单个分隔符的正则表达式
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
解释:
@2=A2 # literally
[^>]* # 0 or more any character that is not >
>> # literally
[^>]* # 0 or more any character that is not >
@2=B2 # literally
给定一个像 @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
解释:
@2=A2 # literally
[^>]* # 0 or more any character that is not >
>> # literally
[^>]* # 0 or more any character that is not >
@2=B2 # literally