正则表达式:找到重复匹配后跟特定单词

时间:2018-04-03 22:23:54

标签: regex python-2.7

我有一个像这样的字符串

   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) *(.+?) *(?:,)

https://regex101.com/r/kN7hvR/6

1 个答案:

答案 0 :(得分:1)

你想要这样的输出吗?

.*?(YUY|GWU|(?=TTE)).*?(?:TTE)\s*([-\w]+)\s*(?:IIE)\s*([-\w]+)(?:(?!TTE|IIE|YUY|GWU).)*

你可以试试这个正则表达式

YUY

Demo

如您所见," GWUgroup 1"捕获到TTE并将group 2值捕获到IIE,将group 3值捕获到YUY

但似乎" GWU"""仅在值发生更改时才会显示和捕获值,否则(group 1)不会捕获到group 1。所以我认为你可以通过引用python脚本中前一个{{1}}提取的值来弥补这个正则表达式的不足。