从文本文件中提取不同的链接?

时间:2017-06-18 01:15:22

标签: python regex

我的问题是我有一个非结构化的.txt文件,如下所示包含不同的链接,因为每个链接都有一个签名:

Sample of the text file

我想要的是提取所有以http:// web.alphorm.com

开头的链接

我使用了下面显示的正则表达式:

matchObj = re.findall(r'(http:// web.alphorm.com/.*&Key-Pair-Id=APKAJF2PMCJPGKXG2GEA)"}',
                      string)

但它并没有真正给我我想要的东西。它缩小了文本文件并为我提供了搜索链接,但还有其他不受欢迎的链接和文本!

它出了什么问题?

1 个答案:

答案 0 :(得分:2)

正则表达式中的.*贪婪,这意味着解析引擎将匹配第一个匹配的http://web.alphorm.com/和{{ 1}} 最后匹配,介于之间的所有内容。

试试这个:

&Key-Pair-Id=APKAJF2PMCJPGKXG2GEA

添加matchObj = re.findall(r'(http://web.alphorm.com/.*?&Key-Pair-Id=APKAJF2PMCJPGKXG2GEA)"}',string) 将匹配 lazy ,尽可能少地匹配。

注意:我还删除了?http://之间的空格,因为我认为这是一个错字。