Я бы хотел найти и заменить (ни с чем) все вхождения текста между двоеточиями, например:
: улыбка:
:пальцы вверх:
: +1:
: -1:
но НЕ, если двоеточия являются частью URL, например, вот этот URL:
http://pdf.reuters.com/htmlnews/htmlnews.asp?i=43059c3bf0e37541&u=urn:newsml:reuters.com:20190417:nPn5XHnXBa
Как видите, этот URL имеет несколько двоеточий, и любые такие совпадения следует игнорировать.
Полный текст может содержать текст до и после. Кроме того, они также могут отображаться последовательно, без пробелов между ними. Например:
Я просматривал и нашел этот URL: smile: http://pdf.reuters.com/htmlnews/htmlnews.asp?i=43059c3bf0e37541&u=urn:newsml:reuters.com:20190417:nPn5XHnXBa это фантастика: smile :: + 1: Помните: не забудьте поднять голос!
Я ожидаю, что результат будет:
Я просматривал и нашел этот URL http://pdf.reuters.com/htmlnews/htmlnews.asp?i=43059c3bf0e37541&u=urn:newsml:reuters.com:20190417:nPn5XHnXBa это фантастика Помните: не забудьте поднять голос!
Я использую модуль регулярных выражений Python для своих замен.
Я думаю:
«Хорошо, я должен найти любой URL и сообщить регулярному выражению IGNORE о любых совпадениях, которые являются частью URL» *
Итак, у меня есть регулярное выражение для успешного сопоставления любого URL как такового:
(HTTP [^ \ s] +)
Это позволит найти http и все остальное до непробельного символа или символа новой строки, который будет указывать на конец URL.
У меня также есть регулярное выражение для сопоставления текста между (включая) двоеточиями:
(: [\ W + -] +:)
ТАК ... Я надеялся использовать негативную перспективу и объединить эти 2 следующим образом:
(?! HTTP [^ \ s] +) (: [\ ш + -] +:)
Это ПОЧТИ идеально, но в итоге оно соответствует этим двум частям URL:
: NewsML:
а также
: 20190417:
Как я могу построить это регулярное выражение так, чтобы оно совпадало с текстом в любом месте, кроме случаев, когда двоеточия являются частью URL?
Спасибо за миллион!
PS. Я использовал этот удивительный сайт, чтобы проверить мои шаблоны ...
https://regexr.com/