2010-01-20 6 views
3

Je suis dans une situation où j'ai une chaîne de texte brut où je veux trouver tous les liens (commençant par Http://) et placer <a href="thelink"> avant le début du lien, puis un </a> après le lien. Le problème est, que je ne sais pas quand le lien se termine. À savoir:Trouver des liens dans la chaîne de texte brut

(http://www.mylink.com)

Dans l'exemple ci-dessus, je suis en mesure de trouver le début du lien: http:// mais je ne sais pas quand le lien se termine, il donc prendre la ) également.

Quelqu'un peut-il nous éclairer à ce sujet? Devrais-je utiliser une sorte de pattern RegEx?

Merci beaucoup d'avance.

Tous les meilleurs,

Bo

Répondre

3

Selon RegexBuddy utiliser comme votre regex

\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[A-Z0-9+&@#/%=~_|] 

et comme votre remplacer la syntaxe

<a href="\0">\0</a> 

La logique est de regarder pour tous les caractères d'URL valides et arrêter une fois que vous rencontrez un invali d un comme un espace ou une parenthèse droite, par exemple.

Si vous n'avez pas essayé leur outil, je le recommande fortement. C'est un excellent outil d'apprentissage car il dissèque les expressions régulières et les convertit en anglais.

Il vient également avec une bibliothèque énorme d'expression utile telle que celle-ci et c'est assez bon marché.

+0

Parfaitement! Merci beaucoup Michael :) Fonctionne comme un charme .. – bomortensen