Python正则表达式用"或"条件

时间:2017-02-21 03:28:45

标签: python regex

我正在尝试从一个文件中提取一些部分。原文是这样的:

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的结果证明是文件中的每个部分。有什么想法吗?

2 个答案:

答案 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;']

答案 1 :(得分:1)

为什么不在partsplit字符串?

>>> 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;']