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

Find Multiple Flagged String within String Python

我有多个标记的字符串:

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

它return除了data1的FLGST和data最后的FLGEN之外的所有数据。

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

合适的return应该是:

[data1, data2, data3, ...]

积极回顾过去,积极展望未来

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

输出

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