У меня есть фрагмент текста:
.....https://www.one.com/privacy/\............http://two.com/terms/'.............https://three.com/pricing/\..........https://four.com/widget/wg74ythx;.........http://five.com/pricing .........
Мой код для извлечения веб-ссылок: link = re.compile(r'https?://(\w.*?)(\\|;|\'|\s)')
link = re.compile(r'https?://(\w.*?)(\\|;|\'|\s)')
Но мне нужно исключить из моих результатов все ссылки со словами «конфиденциальность»или "виджет".Я застрял здесь, и мне нужна помощь сообщества.
Если вам не нужен объект компиляции, вы можете сделать что-то вроде
s = mystring urls = [url[0] for url in re.findall(r'https?://(\w.*?)(\\|;|\'|\s)',s) \ if not re.search('privacy|widget',url[0])]
вы можете использовать отрицательный взгляд :
import re l = ["https://www.one.com/privacy/", "http://two.com/terms/", "https://three.com/pricing/", "https://four.com/widget/wg74ythx;", "http://five.com/pricing"] pattern = re.compile("^(?!.*privacy|.*widget)(https?:\/\/(\w.*?)(\/|;|'|\s))") for url in l: print(url) print(re.match(pattern, url))
дает
https://www.one.com/privacy/ None http://two.com/terms/ <re.Match object; span=(0, 15), match='http://two.com/'> https://three.com/pricing/ <re.Match object; span=(0, 18), match='https://three.com/'> https://four.com/widget/wg74ythx; None http://five.com/pricing <re.Match object; span=(0, 16), match='http://five.com/'>
, однако следите за правильным использованием слеша и обратного слеша, особенно в сочетании с обычными необработанные строки.