Шаблон QRegExp для URL-адресов

Я пытаюсь сопоставить URL-адреса Google с некоторым текстом, который хранится в переменной, используя приведенный ниже шаблон.

В URL используются двойные кавычки

QRegExp regExp;
regExp.setPattern("http://www.google.com/(.*)");

Мне удается сопоставить URL-адрес, но он невольно соответствует всему тексту, содержащемуся после него. Я пробовал использовать похожие варианты, подобные приведенным ниже, но они, похоже, не работают.

regExp.setPattern("http://www.google.com/(.*)\"is"); 
regExp.setPattern("http://www.google.com/^(.*)$\"");

Любая помощь, чтобы получить регулярное выражение, которое соответствует только URL-адресу.

заранее спасибо


person user866190    schedule 05.09.2012    source источник


Ответы (2)


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

QRegExp regExp;
regExp.setPattern("http://www.google.com/([^()\"' ]*)");

Тогда вам просто нужно добавить больше возможных персонажей в этот отрицательный класс символов.

person SirDarius    schedule 05.09.2012

Есть ли причина, по которой вам нужно/хотите использовать QRegExp?

Скорее всего, вы могли бы использовать QUrl.

person Eric Hulser    schedule 05.09.2012
comment
Спасибо за предложение, я рассмотрю его, потому что RegExp довольно загадочен, чтобы смотреть на него - person user866190; 05.09.2012
comment
Я предпочитаю это решение, чтобы получить часть URL-адреса, которую вы сопоставляете с этим регулярным выражением, вы просто делаете что-то вроде QUrl(url_string).path() - person Chris; 05.09.2012