2010-11-18 64 views
0

某處文本排除我有一個帶HREFC#正則表達式負先行從比賽

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

我需要替換HREF attribue文本除的<%%含量爲小寫鏈接> brakets

應該是這樣的:

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

我想是這樣的.. "href=\"([^\"]*[A-Z]+[^\"]*)(?:(?<!.*<%[^%]*%>.*)))\""但它不工作。

謝謝!

+2

哇,哇,慢下來。你真的在解析aspx文件嗎?或者你實際上正在執行該頁面,並試圖通過後面的代碼替換href中的任何值?你要把那個正則表達式替換放在哪裏? – BeemerGuy 2010-11-18 23:32:32

+0

我只需要在鏈接小寫所有 – Sergey 2010-11-18 23:40:02

+0

可能重複[C#正則表達式查找和替換鏈接只有大寫字符,不匹配排除](http://stackoverflow.com/questions/4219017/c-正則表達式查找和替換鏈接只帶大寫字符和) – 2010-11-19 03:13:39

回答

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的另一個問題。 – 2010-11-19 03:34:04

+0

哇,真棒,非常感謝你! – Sergey 2010-11-20 00:09:37

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

參數異常解析「?<=(href \ =」))[^「] +」 - Quantifier {x,y}什麼也沒有。 – Sergey 2010-11-18 23:39:07

+0

我錯過了一個paren。現在修復。 – 2010-11-18 23:40:36

+0

瑞恩,這也使<% %>中的文字括號小寫,我的問題是如何從比賽中排除它 – Sergey 2010-11-18 23:51:14