我的问题是我有一个非结构化的.txt文件,如下所示包含不同的链接,因为每个链接都有一个签名:
我想要的是提取所有以http:// web.alphorm.com
开头的链接我使用了下面显示的正则表达式:
matchObj = re.findall(r'(http:// web.alphorm.com/.*&Key-Pair-Id=APKAJF2PMCJPGKXG2GEA)"}',
string)
但它并没有真正给我我想要的东西。它缩小了文本文件并为我提供了搜索链接,但还有其他不受欢迎的链接和文本!
它出了什么问题?
答案 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://
之间的空格,因为我认为这是一个错字。