[英]Python Regex - exclude url containing a word
我對正則表達式有疑問-我有4個網址示例:
http://auto.com/index.php/car-news/12158-classicauto-cup-2016-photo
http://auto.com/index.php/car-news/11654-battle-royale-2014
http://auto.com/index.php/tv-special-news/10480-new-film-4
http://auto.com/index.php/first/12234-new-volvo-xc60
我想排除里面帶有“ tv-special-news”或最后是“ photo”的網址。
我試過了:
http://(www.)?auto.com/index.php/(?!(tv-special-news)).*/[a-zA-Z0-9\-]{1,}-(?!photo)
但是它不能完全按照我的要求工作
http://(www.)?auto.com/index.php/(?!(tv-special-news)).*/[a-zA-Z0-9\-]{1,}-(?!photo)
您對此很滿意。 您只需要刪除(?!photo)
之前的破折號,即可使行結束時沒有結尾的破折號,並在末尾添加$
以確保需要匹配整行。
然后,您還必須將負前瞻更改為負后瞻,以確保如果在行末跟有photo
: (?<!photo)
話,則與行尾不匹配。
http://(www.)?auto.com/index.php/(?!(tv-special-news)).*/[a-zA-Z0-9\-]{1,}(?<!photo)$
另外,您應該正確地避開所有點:
http://(www\.)?auto\.com/index\.php/(?!(tv-special-news)).*/[a-zA-Z0-9\-]+(?<!photo)$
同樣,量詞{1,}
等效於+
。
您可以使用此正則表達式:
^(?!.*-photo$)http://(?:www\.)?auto\.com/index\.php/(?!tv-special-news)[^/]+/[\w-]+-
photo
結尾,則(?!.*-photo$)
會否定匹配失敗。 (?!tv-special-news)
在/index.php/
后出現tv-special-news
時會否定斷言失敗。 或者使用后置正則表達式,您可以使用:
^http://(www\.)?auto\.com/index\.php/(?!tv-special-news).*/[a-zA-Z0-9-]+$(?<!photo)
您可以使用以下解決方案:
import re
list_of_urls = ["http://auto.com/index.php/car-news/12158-classicauto-cup-2016-photo",....]
new_list = [i for i in list_of_urls if len(re.findall("photo+", i.split()[-1])) == 0 and len(re.findall("tv-special-news+", i.split()[-1])) == 0]
您只需將鏈接存儲在列表中,然后使用正則表達式對其進行迭代:
re_pattern = r'\\ b(?:tv-special-news | photo)\\ b'
re.findall(re_pattern,link)
(其中鏈接將是列表中的項目)
如果模式匹配,則它將結果存儲在列表中。 您只需檢查列表是否為空。 如果列表為空,則可以包括鏈接,否則將其排除。
這是示例代碼:
import re
links = ['http://auto.com/index.php/car-news/12158-classicauto-cup-2016-photo', 'http://auto.com/index.php/car-news/11654-battle-royale-2014', 'http://auto.com/index.php/tv-special-news/10480-new-film-4', 'http://auto.com/index.php/first/12234-new-volvo-xc60']
new_list = []
re_pattern = r'\b(?:tv-special-news|photo)\b' for link in links: result = re.findall(re_pattern,link) if len(result) < 1: new_list.append(link)
print new_list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.