我有多个标记的字符串:
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 FLGST
和FLGEN
数据之外的所有数据。
那么,如何从stringWithGarbage 中获取每个标记字符串?
适当的回报是:
[data1, data2, data3, ...]
答案 0 :(得分:1)
使用积极的外观和积极向前看
strg = "garbagegarbageFLGSTdata1FLGENFLGSTdata2FLGENgarbagegarbageFLGSTdata3FLGEN"
pattern = re.compile(r'(?<=FLGST)(\S*?)(?=FLGEN)')
re.findall(pattern, strg)
输出
['data1', 'data2', 'data3']