2010-11-18 11 views
0

はどこかのテキストで私はのコンテンツを除き、小文字にHREF attribueでテキストを交換する必要があるのhrefC#正規表現否定先読み一致から除外

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

とのリンクを持っている<%%> brakets

のようになります。

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

私は"href=\"([^\"]*[A-Z]+[^\"]*)(?:(?<!.*<%[^%]*%>.*)))\"" ..このような何かを考えていたが、その作業はありません。

ありがとう!

+2

おっとおっと、スローダウン。あなたは実際にaspxファイルを解析していますか?あるいは、実際にそのページを実行していて、コードの背後にあるhrefにある値を置き換えようとしていますか?あなたはその正規表現の置き換えをどこに置くつもりですか? – BeemerGuy

+0

私は([C#正規表現は、検索と置換だけ大文字でリンクをして除外と一​​致しない]それは、すべての – Sergey

+0

可能性の重複だ小文字のリンクのテキストを作成する必要がありhttp://stackoverflow.com/questions/4219017/c- "<=" href \ = "))[^"] + " - 数量尺度{x、y}の正規表現 - 検索置換え - 大文字のみのリンク - および) –

答えて

3

あなたはすでにそれを考え出したていない場合は、これを試してみてください。

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素晴らしい仕事。私は[私の応答](http://stackoverflow.com/questions/4219017/c-regular-expressions-find-and-replace-links-with-only-uppercase-characters-and/4221722#4221722)で別のアプローチを取った)OPの他の質問に。 –

+0

うわー、素晴らしいです、ありがとう! – Sergey

0

何かがあなたのために働く必要があります...

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

引数例外解析"何もしていない。 – Sergey

+0

私はparenが欠けていた。今修正されました。 –

+0

これも<% %>括弧内のテキストが小文字になり、私の質問は試合 – Sergey