我試圖取代普通域名就像「A」的標籤的輸入字符串的子串,使用正則表達式是這樣的:正則表達式替換domain子在C#中的HTML標籤
var pattern = @"[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})";
var input = "text1 www.example.com text2 <a href='foo'>www.example.com</a> text3";
var result = Regex.Replace(input, pattern, string.Format("<a href='$0'>$0</a>"));
這將創建以下的輸出:
text1 <a href='www.example.com'>www.example.com</a> text2 <a href='foo'><a href='www.example.com'>www.example.com</a></a> text3
哪一個是錯誤的,因爲第二個域已經是標記,現在是標記內的標記。
有沒有辦法修改正則表達式模式來忽略第二域子字符串的匹配?
也許通過忽略在域substring開始的'>'字符? (或結尾 '<' 炭)
有效地產生這樣的結果:
text1 <a href='www.example.com'>www.example.com</a> text2 <a href='foo'>www.example.com</a> text3
如何使用HTML解析器作業? HTML並不適合被正則表達式混淆。 HtmlAgilityPack很好。 – spender
公平地說,這還不是真的HTML。但http://stackoverflow.com/a/1732454/1336590仍然是必讀的。 「 www.example.com'應該發生什麼事情(注意空格)?這足以說明一場比賽之前不能直接使用'>'或直接使用''後面的''? – Corak
什麼是動態的,你的輸入是什麼? –