2017-06-18 90 views
-1

我的問題是,我有象下面這樣的一個非結構化的.txt文件包含不同的環節,因爲在每一個環節的簽名:從文本文件中提取不同的鏈接?

Sample of the text file

我想是提取所有的鏈接開頭以http:// web.alphorm.com

我用下圖所示的正則表達式:

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

但它並沒有真正給我我想要的。它縮小了文本文件並給了我搜索到的鏈接,但還有其他不需要的鏈接和文本!

它有什麼問題?

+2

請發表[mcve] –

+1

你確實在'http://'和'web.alphorm.com'之間有空格嗎? –

+0

請[編輯]你的問題,並從文本文件中放入一些實際的樣本數據。請參閱[** _阻止代碼和/或錯誤的屏幕截圖_ **](https://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-orrors)。 – martineau

回答

2

.*在你的正則表達式是貪婪,這意味着解析引擎將匹配第一比賽http://web.alphorm.com/最後比賽&Key-Pair-Id=APKAJF2PMCJPGKXG2GEA,並一切之間。

試試這個:

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

加入了?會讓匹配,匹配儘可能少。

注:我還刪除了http://web.alphorm.com之間的空格,因爲我認爲這是一個拼寫錯誤。