我有一個字符串,如下所示: string chart = "<div id=\"divOne\">Label.</div>;"
這是動態生成的,沒有我的控制,並且想刪除文本「標籤」。來自封閉的div元素。使用C#正則表達式去除div標籤中包含的文本
我嘗試以下,但我正則表達式的認識還僅限於得到它的工作: System.Text.RegularExpressions.Regex.Replace(chart, @"/(<div[^>]+>)[^<]+(<\/div>)/i", "");
我有一個字符串,如下所示: string chart = "<div id=\"divOne\">Label.</div>;"
這是動態生成的,沒有我的控制,並且想刪除文本「標籤」。來自封閉的div元素。使用C#正則表達式去除div標籤中包含的文本
我嘗試以下,但我正則表達式的認識還僅限於得到它的工作: System.Text.RegularExpressions.Regex.Replace(chart, @"/(<div[^>]+>)[^<]+(<\/div>)/i", "");
你的正則表達式對我來說很好,(但不指定'/.../i'
分隔符和修改)。並使用'$1$2'
作爲替換字符串:
var re = new System.Text.RegularExpressions.Regex(@"(?i)(<div[^>]+>)[^<]+(<\/div>)");
var text = regex.Replace(text, "$1$2");
作品!對於問題,1.(?i)做什麼?和2. $ 1 $ 2如何在沒有文本的情況下返回封閉元素,我的意思是問爲什麼string.empty不會僅替換內部文本? – 2011-05-11 15:50:52
'(?i)'打開'不區分大小寫'模式。 '$ 1 $ 2'表示:_「用捕獲組1替換匹配的字符串,然後捕獲組2」_我們捕獲組1中的DIV開始標籤和組2中的結束標籤。內容不被捕獲,因此被丟棄,這是非常基本的東西。有關更多詳細信息,請參閱教程:[www.regular-expressions.info](http://www.regular-expressions.info/)。快樂的regexing! – ridgerunner 2011-05-12 17:07:08
使用LinqPad我得到這個片段的工作。希望它能夠正確解決您的問題。
string chart = "<div id=\"divOne\">Label.</div>;";
var regex = new System.Text.RegularExpressions.Regex(@">.*<");
var result = regex.Replace(chart, "><");
result.Dump(); // prints <div id="divOne"></div>
基本上,它找到了對角尖括號之間的所有字符,並將其替換。
您採取的方法取決於更換需要多強大。如果您要在更通用的級別上使用此目標特定節點,則應使用MatchEvaluator。這個例子會產生類似的結果:
string pattern = @"<(?<element>\w*) (?<attrs>.*)>(?<contents>.*)</(?<elementClose>.*>)";
var x = System.Text.RegularExpressions
.Regex.Replace(chart, pattern, m => m.Value.Replace(m.Groups["contents"].Value, ""));
你在這種情況下使用的模式是定製的,但它需要的命名組捕獲的優勢。它允許您隔離部分匹配,並通過名稱引用它們。
嘗試此您正則表達式:
<div\b[^>]*>(.*?)<\/div>
下產生輸出<div></div>
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"<div\b[^>]*>(.*?)<\/div>");
Console.WriteLine(regex.Replace("<div>Label 1.</div>","<div></div>"));
Console.ReadLine();
工作正常,但我只需要更換中間的文字。 – 2011-05-11 15:41:25
你必須只寫一個模式來選擇div標籤的文本。
Regex.Replace(chart,yourPattern,string.empty);
我對你的問題有點困惑;這聽起來像是通過一些預生成的HTML進行解析並且想要移除出現在<div>
標記中的chart
值的所有實例。如果這是正確的,試試這個:
"(<div[^>]*>[^<]*)"+chart+"([^<]*</div>)"
返回連接在一起的第一&第二分組,你應該有你的背部<div>
SANS chart
。
這是比正則表達式更好的方法。
var element = XElement.Parse("<div id=\"divOne\">Label.</div>");
element.Value = "";
var value = element.ToString();
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Will 2011-05-11 15:18:05