Регулярные выражения. Поиск текста ссылки vk и замена на текст ссылку discord
мне нужен поиск текст-ссылок из vk и замена на discord текст-ссылку
import re
txt = "Какой-нибудь текст [https://vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст"
x = re.search("^https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,}|[a-zA-zа-яА-я]$", txt)
print(x)
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
Если правильно понял задачу то что-то такое должно получится
import re
from urllib.parse import unquote
links = [
'Какой-нибудь текст [https://vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [http://vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [http://www.vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [https://www.vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
]
pat = re.compile(r'\[(http.*?)]')
def convert_to_normal(item: str):
link, text = item.split('|')
return f'[{link}]({text})'
def fetch_link_n_header(item: str):
return pat.sub(lambda x: convert_to_normal(x.group(1)), unquote(item))
print(
*map(fetch_link_n_header, links),
sep='\n'
)
# Какой-нибудь текст [https://vk.com/wall-80197218_1416981](удалят три способности) какой-нибудь текст
# Какой-нибудь текст [http://vk.com/wall-80197218_1416981](удалят три способности) какой-нибудь текст
# Какой-нибудь текст [http://www.vk.com/wall-80197218_1416981](удалят три способности) какой-нибудь текст
# Какой-нибудь текст [https://www.vk.com/wall-80197218_1416981](удалят три способности) какой-нибудь текст
UPD:
Немного упростил:
import re
from urllib.parse import unquote
links = [
'Какой-нибудь текст [https://vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [http://vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [http://www.vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
'Какой-нибудь текст [https://www.vk.com/wall-80197218_1416981%7Cудалят три способности] какой-нибудь текст',
]
pat = re.compile(r'\[(http.*?)\|(.*?)]')
def format_link(item: str):
return pat.sub(r'[\1](\2)', unquote(item))
print(
*map(format_link, links),
sep='\n'
)