2010-11-18 3 views
0

irgendwo im Text Ich habe eine eine Verbindung mit hrefC# Reguläre Ausdrücke negative Vorschau von Spiel ausschließen

<a href="image-CoRRECTME.aspx?ALSO=ME&leaveme=<%= MyClass.Text %>">somelink</a> 

Ich brauche Text in href Attribué zu ersetzen, außer Inhalt des <%% in Klein> brakets

sollte wie folgt aussehen:

<a href="image-correctme.aspx?also=me&leaveme=<%= MyClass.Text %>">somelink</a> 

ich so etwas wie dieses denken war .. "href=\"([^\"]*[A-Z]+[^\"]*)(?:(?<!.*<%[^%]*%>.*)))\"" aber seine nicht funktioniert.

Danke!

+2

whoa whoa, verlangsamen. Analysieren Sie tatsächlich die aspx-Datei? Oder du führst diese Seite tatsächlich aus und versuchst, den Wert in href durch den Code dahinter zu ersetzen? Wo werden Sie diesen Regex-Ersatz platzieren? – BeemerGuy

+0

Ich muss nur Text in Links Kleinbuchstaben machen, das ist alles – Sergey

+0

mögliche Duplikate von [C# Reguläre Ausdrücke finden und ersetzen Links mit nur Großbuchstaben und entsprechen nicht den Ausschlüssen] (http://stackoverflow.com/questions/4219017/c- regular-expressions-find-and-replace-links-mit-nur-Großbuchstaben-Zeichen-und) –

Antwort

3

die Sie interessieren, wenn Sie es nicht bereits herausgefunden haben.

private void test() 
{ 
    string t = @"<a href=""image-CoRRECTME.aspx?ALSO=ME&leaveme=<%= MyClass.Text %>&test2=<%= MyClass2.Text %>&last_test=nothing"">somelink</a>"; 
    string fixed_string = Regex.Replace(t, "(?<=href=\"|href=\"[^\"]*%>)([^\"]*?)(?=<%|\")", TestMatchEvaluator); 
} 

private string TestMatchEvaluator(Match m) 
{ 
    return m.Value.ToLower(); 
} 
+0

+1 nette Arbeit. Ich nahm einen anderen Ansatz in [meine Antwort] (http://stackoverflow.com/questions/4219017/c-regular-expressions-find-and-replace-links-with-only-uppercase-characters-and/4221722#4221722) zur anderen Frage des OP. –

+0

Wow das ist super, vielen Dank! – Sergey

0

So etwas sollte für Sie arbeiten ...

Regex test = new Regex(@"(?<=(href\=""))[^<]+", RegexOptions.Compiled); 

string htmlCode = @"<a href=""image-CoRRECTME.aspx?ALSO=ME&leaveme=<%= MyClass.Text %>"">somelink</a>"; 

string result = test.Replace(htmlCode, test.Match(htmlCode).Value.ToLower()); 
+0

Argument Ausnahmeparasting "? <= (href \ =")) [^ "] +" - Quantifier {x, y} nichts folgen. – Sergey

+0

Ich vermisste einen paren. Jetzt behoben. –

+0

Ryan, das macht auch Text in der <% %> Klammern Kleinbuchstaben, meine Frage war, wie man es aus dem Spiel – Sergey