Работает ли это с консоли? Это работает для меня:
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.6.5
BuildVersion: 10H574
$ rails c
Loading development environment (Rails 3.0.3)
>> 1.week.ago
=> Sun, 14 Nov 2010 16:57:18 UTC +00:00
Вы можете сделать это без regex
, если хотите.
stng = 'La-la-la https://example.com/ la-la-la https://example.com/example.PNG'
sentance = '{f_txt} <a href="{f_url}">{f_url}</a> {s_txt} <img src="{s_url}">'
f_txt, f_url, s_txt, s_url = stng.split()
print(sentance.format(f_txt=f_txt, f_url=f_url, s_txt=s_txt, s_url=s_url))
Выход
La-la-la <a href="https://example.com/">https://example.com/</a> la-la-la <img src="https://example.com/example.PNG">
Вы можете использовать следующее регулярное выражение:
(https?.*?\.com\/)(\s+[\w-]*\s+)(https?.*?\.com\/[\w\.]+)
(https?.*?\.com\/)
Первая группа захвата. Захват http
или https
, все до .com
и косой черты /
. (\s+[\w-]*\s+)
Вторая группа захвата. Захват пробелов, буквенно-цифровых символов и подстановок, а также пробелов. Вы можете добавить больше символов в набор символов, если это необходимо. (https?.*?\.com\/[\w\.]+)
Третья группа захвата. Захватите http
или https
, все до .com
, косую черту /
, буквенно-цифровые символы и полную остановку .
для расширения. Снова вы можете добавить больше символов в набор символов в этой группе захвата, если вы ожидаете других символов. Вы можете протестировать регулярное выражение здесь .
В качестве альтернативы, если вы ожидаете переменные URL-адреса и домены, которые вы можете использовать:
(\w*\:.*?\.\w*\/)(\s+[\w-]*\s+)(\w*\:?.*?\.\w*\/[\w\.]+)
Где первая и третья группы захвата теперь соответствуют любым буквенно-цифровым символам, за которыми следует двоеточие :
и все до .
, буквенно-цифровые символы \w
и косую черту. Вы можете проверить это здесь .
Вы можете заменить захваченные группы:
<a href="\1">\1</a>\2<img src="\3">
Где \1
, \2
и \3
являются обратными ссылками на захваченные группы один, два и три соответственно.
Фрагмент питона:
>>import re
>>str = "La-la-la https://example.com/ la-la-la https://example.com/example.PNG"
>>out = re.sub(r'(https?.*?\.com\/)(\s+[\w-]*\s+)(https?.*?\.com\/[\w\.]+)',
r'<a href="\1">\1</a>\2<img src="\3">',
str)
>>print(out)
La-la-la <a href="https://example.com/">https://example.com/</a> la-la-la <img src="https://example.com/example.PNG">
(\w*\:.*?\.\w*\/)(\s+[\w-]*\s+)(\w*\:?.*?\.\w*\/[\w\.]+)
здесь . Если это решение не сработает для вас, можете ли вы привести примеры, которые вызывают это последнее регулярное выражение?
– UnbearableLightness
13 July 2018 в 14:44