2010-07-23 7 views
3

Comment puis-je utiliser QString::replace pour détecter les URL dans une chaîne et les remplacer par un lien HTML, comme ...Comment utiliser regex pour remplacer des URL avec un lien HTML dans Qt?

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

Que doit faire l'argument QRegExp être? La fin d'une URL doit être indiquée par l'occurrence d'un caractère d'espace (tel que l'espace, \ r ou \ n) ou la fin de la chaîne. La regex devrait être assez simple: http: //, https: //, ftp: //, etc, suivi d'un ou plusieurs caractères non-espaces, devrait être converti en un lien.


EDIT: Ceci est la solution ... je

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

Répondre

4

Je pense que (?:https?|ftp)://\\S+ va le faire pour vous. N'oubliez pas que cela peut potentiellement correspondre à certaines URL non valides, mais c'est probablement OK pour vos besoins. (Une regex qui ne correspond qu'à des URL syntaxiquement valides serait assez compliquée à construire et ne vaut pas la peine d'être faite.)

+0

Merci, ça marche très bien. Vous avez raison, la correspondance avec des URL potentiellement invalides est OK pour où j'en ai besoin. –

Questions connexes