麻烦从大块中挖出一部分文本

时间:2018-08-04 07:05:20

标签: python regex python-3.x

如何从我粘贴在下面的文本部分中获得出现在Telephone前面的地址。我尝试了以下方法,但没有任何帮助。

这是我到目前为止尝试过的代码:

import re

content="""
Campbell, Bellam Associés Inc.

3003 Rue College
 Sherbrooke, QC J1M 1T8 
Telephone: 819-569-9255 
 Website: http://www.assurancescb.com 
"""
pattern = re.compile(r"(.*)(?=Telephone)")
for item in pattern.finditer(content):
    print(item.group())

预期输出:

Campbell, Bellam Associés Inc.
3003 Rue College
Sherbrooke, QC J1M 1T8

文本块始终像粘贴的文本一样,并且没有附加任何标记,因此我选择使用正向后方标记,因此我尝试像上面那样进行标记。

2 个答案:

答案 0 :(得分:1)

dot与换行符不匹配,因此您可以使用modifier (?s)或使用re.Sre.DOTALL

pattern = re.compile(r"(.*)(?=Telephone)", re.S)

pattern = re.compile(r"(?s)(.*)(?=Telephone)")

您也可以不使用分组来获得比赛:

(?s).*(?=Telephone)

答案 1 :(得分:1)

更改行

  

模式= re.compile(r“(。*)(?=电话)”)

收件人

pattern = re.compile(r"(.*)(?=Telephone)", re.DOTALL)

使您的正则表达式通配符(*)与换行符匹配。 :)