我有一个像这样的字符串
YUY:TTE H478-IIE HL-315,qerbgadfvsadfs TTE E581 IIE 362,gfkgjkgf TTE A635 IIE 150717,RRNLIP RING TTE 478-3 IIE RRN751,sgnyjen FTE GWU:TTE 3820K IIE HL1078,adsvdfbdsb TTE 581 IIE 101, asgfasgf TTE A35-1 IIE 66765,RRNLIP reqgwr TTE 47816-3 IIE RRN607,zvbsdbgf
并且需要在TTE和IIE之后找到代码的重复匹配,就像[['222', '111'], ['222', '999', '555']]
222,111,222,999,555
222,999,555,111
[Finished in 0.181s]
那样,但我也需要在FTE之后立即找到这个词。所以我的比赛将是:
YUY H478-HL-315
YUY E581 362
YUY A635 150717
YUY 478-3 RRN751
GWU 3820K HL1078
GWU 581 101
GWU A35-1 66765
GWU 47816-3 RRN607
表达式也应仅在代码遵循FTE(YUY | GWU)时匹配,即(?:TTE) *(.+?) *(?:IIE) *(.+?) *(?:,)
答案 0 :(得分:1)
你想要这样的输出吗?
.*?(YUY|GWU|(?=TTE)).*?(?:TTE)\s*([-\w]+)\s*(?:IIE)\s*([-\w]+)(?:(?!TTE|IIE|YUY|GWU).)*
你可以试试这个正则表达式
YUY
如您所见," GWU
或group 1
"捕获到TTE
并将group 2
值捕获到IIE
,将group 3
值捕获到YUY
。
但似乎" GWU
或""
"仅在值发生更改时才会显示和捕获值,否则(group 1
)不会捕获到group 1
。所以我认为你可以通过引用python脚本中前一个{{1}}提取的值来弥补这个正则表达式的不足。