Regex et remplacement de chaines
Ca fait longtemps que j'ai pas posté sur le forum.
Bon alors j'ai un souci avec une fonction utilisant une regex pour remplacer une url en balise <a href=.....> etc.
Dans cette fonction, je cherche à trouver une chaine du genre
Code:
[[montexte|monurl]]
et la transformer en
Code:
<a href="monurl">montexte</a>
ET, toujours dans le même bloc de texte, chercher les url pour les retranscrire en
Code:
<a href="monurl">monurl</a>
afin de la rendre cliquable.
cette deuxième partie fonctionne très bien. la première ne matche rien du tout et quand bien même j'y arriverais, je n'ai pour l'instant pas d'idée pour combiner les deux sans que la 2ème n'écrase le résultat de la première.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public static string UrlReformate(string rawtext)
{
string result = "";
if (rawtext != null)
{
string re1 = @"^(?:\[\[.*\|(?:(?:\w+):\/\/(?:[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*)\]\])$";
string re2 = @"(?:(?:\w+):\/\/(?:[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*)";
Regex r1 = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Regex r2 = new Regex(re2, RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (r1.Match(rawtext).Success)
{
result = r1.Replace(rawtext, delegate(Match m)
{
string[] match = m.Value.Split('|');
return "<a href='" + match[1] + "'>" + match[0] + "</a>";
});
}
else
result = r2.Replace(rawtext, delegate(Match m)
{
return "<a href='" + m.Value + "'>" + m.Value + "</a>";
});
}
return result;
} |
Texte d'essai :
Code:
1 2 3 4
| test
ceci est un texte de test
[[cliquer ici|http://www.google.fr]], pour ouvrir Google. |