在String Python中查找多个标记字符串

时间:2015-02-13 06:52:41

标签: python regex string regex-lookarounds

我有多个标记的字符串:

FLGSTdata1FLGEN
FLGSTdata2FLGEN
...

其中FLGST是开始标志,FLGEN是结束标志。

我将这些字符串组合起来并添加一些垃圾数据,所以它看起来像这样:

garbagegarbageFLGSTdata1FLGENFLGSTdata2FLGENgarbagegarbageFLGSTdata3FLGEN...

我需要从组合字符串中获取每个标记字符串。

以下是我使用re完成的事情:

>>> pattern = r'5354([A-Za-z0-9_]*)454E' #FLGST = 5354 and FLGEN = 454E
>>> data = re.findall(pattern,stringWithGarbage)
>>> print data[0]
data1FLGENFLGSTdata2FLGENgarbagegarbageFLGSTdata3

它会返回除数据1 FLGSTFLGEN数据之外的所有数据。

那么,如何从stringWithGarbage 中获取每个标记字符串?

适当的回报是:

[data1, data2, data3, ...]

1 个答案:

答案 0 :(得分:1)

使用积极的外观和积极向前看

strg = "garbagegarbageFLGSTdata1FLGENFLGSTdata2FLGENgarbagegarbageFLGSTdata3FLGEN"
pattern = re.compile(r'(?<=FLGST)(\S*?)(?=FLGEN)')
re.findall(pattern, strg)

输出

['data1', 'data2', 'data3']