2017-02-21 85 views
0

我想从一个文件中提取一些部分。原文是这样的:带“或”条件的Python正则表达式

part1 
i like it 
part2 
no, i do not need it 
part3 
yes, 10 minutes; 

不过,有些文件包含PART3,一些DONOT;现在我的任务是使用python从part1提取到part3(如果存在)。这是我得到的:

> for index in range(1, 4): 
>   reg_str = r"part"+str(index)+"(?P<part"+str(index)+">[\s\S]*)"+r"(?:part"+str(index+1)+"$|$)" 
>   m = re.search(reg_str, total) 

但是,我总是得到一个混合,例如,part1的结果证明是文件的每个部分。有什么想法吗?

回答

1

为什么不能split字符串在part

>>> re.split("part[123]", str) 
['', '\ni like it\n', '\nno, i do not need it\n', '\nyes, 10 minutes;'] 

>>> [ part for part in re.split("part[123]", str) if part ] 
['\ni like it\n', '\nno, i do not need it\n', '\nyes, 10 minutes;'] 
+0

非常感谢,伙计! –

2

我会用findall

In [27]: pattern = re.compile('part[1-3]\n(.*)') 
In [28]: pattern.findall(s) 
Out[28]: ['i like it', 'no, i do not need it', 'yes, 10 minutes;'] 
+0

感谢你,伙计! –