Как использовать регулярные выражения для замены URL-адресов HTML-ссылкой в ​​Qt? - PullRequest
3 голосов
/ 23 июля 2010

Как использовать QString::replace для обнаружения URL-адресов в строке и замены их HTML-ссылкой, например так ...

[...].replace(QRegExp("???"), "<a href=\"\\1\">\\1</a>")

Каким должен быть аргумент QRegExp? Конец URL должен быть обозначен вхождением символа пробела (например, пробел, \ r или \ n) или концом строки.

Регулярное выражение должно быть довольно простым: http://, https://, ftp: // и т. Д., За которым следует один или несколько непробельных символов, должны быть преобразованы в ссылку.


РЕДАКТИРОВАТЬ: Это решение, которое я использовал ...

[...].replace(QRegExp("((?:https?|ftp)://\\S+)"), "<a href=\"\\1\">\\1</a>")

1 Ответ

4 голосов
/ 23 июля 2010

Я думаю (?:https?|ftp)://\\S+ сделает это за вас.

Не забывайте, что это может соответствовать некоторым недействительным URL-адресам, но, вероятно, это нормально для ваших целей. (Регулярное выражение, которое соответствует только синтаксически допустимым URL-адресам, было бы довольно сложно построить и не стоило бы усилий.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...