/ / Expression régulière pour remplacer les liens par leurs seules étiquettes - asp.net, regex

Expression régulière pour remplacer les liens par leurs étiquettes uniquement - asp.net, regex

Je veux convertir un lien en un texte défini en utilisant une expression régulière. Pendant la liaison de la grille de données, j'ai une fonction qui convertit (regardez: le texte) en lien. Ma fonction est ici.

Private Function Convertlook(ByVal str As String) As String

Dim look As String
Dim pattern As String = "(look: ([a-z0-9$&.öışçğüs]+))"
Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)
Dim htmlanc As New System.Web.UI.HtmlControls.HtmlAnchor()
Dim postbackRef As String = Page.GetPostBackEventReference(htmlanc, "$1")
htmlanc.HRef = postbackRef
str = regex.Replace(str, "(look: <a href=""javascript:" & htmlanc.HRef & """><font color=""#CC0000"">$1</font></a> )")
look = str
Return look

end function

Le problème est que je veux éditer le texte, comment puis-je l'inverser (regarder: le texte)? Dois-je utiliser à nouveau l'expression régulière et ce qui peut être une expression régulière correcte?

Réponses:

1 pour la réponse № 1

On dirait que l'expression régulière peut être réduite à "n'importe quoi entre les crochets angulaires"

Dim regex As New Regex(".*>(.*)</font.*", RegexOptions.IgnoreCase)
str = regex.Replace(str, "(look: $1)")

0 pour la réponse № 2

Ne serait-il pas plus facile de conserver les deux convertiset la version non convertie du texte (c'est-à-dire dans le ViewState ou le ControlState)? Cela vous éviterait bien des ennuis. Que se passerait-il si votre texte d'origine contient une chaîne comme "<font"?

Je suggère: n'y allez pas, cela ne vaut pas la peine. Gardez une trace de la source.


0 pour la réponse № 3

J'ai changé votre code en C #, voici ce que vous voulez:

string str = "(look: trialText)";
string look = string.Empty;
string pattern = @"(look: ([a-z0-9$&.öışçğüs]+))";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
System.Web.UI.HtmlControls.HtmlAnchor htmlanc = new System.Web.UI.HtmlControls.HtmlAnchor();
string postbackRef = Page.GetPostBackEventReference(htmlanc, "$1");
htmlanc.HRef = postbackRef;

// Here I capture the text inside the anchor :
Match matchedText = regex.Match(str);
string textInsideLink = regex.Replace(matchedText.Value, "$1"); // textInsideLink = "trialText"

str = regex.Replace(str, "(look: <a href="javascript:" + htmlanc.HRef + ""><font color="#CC0000">$1</font></a> )");

// I replace captured text with another text :
str = Regex.Replace(str, "(" + textInsideLink + ")", "anotherTextInsideLink");
// str = "(look: <a href="javascript:__doPostBack("","anotherTextInsideLink")"><font color="#CC0000">anotherTextInsideLink</font></a> )"