2012-04-18 43 views
1

我正在尋找一個正則表達式將屬性添加到已與特定值的屬性的元素屬性元素。添加屬性,它具有一個特定的值

爲如:

<meta name="stack" /> 

我想屬性添加到具有屬性名稱meta元素=「堆棧」,使其看起來像

<meta name="stack" value="overflow" /> 

也有一些C#代碼對於比賽和替換將有所幫助。

我不能使用XmlDocument的或HtmlAgilityPack由於輸入異常的XML。

謝謝。

+0

哎喲更換。使用正則表達式添加屬性並不是微不足道的,應該使用某種解析器來完成。除了正則表達式,你確定沒有任何選項嗎?它可能變得相當多毛。 : -/ – Wiseguy 2012-04-18 18:36:52

回答

2
(<\s*meta\s+name\s*=\s*"stack")(\s*/>) 

$1 value="overflow" $2 
+0

我如何能做到這一點而不管例如屬性的位置,如果之前名稱=「棧」的另一屬性,如<元X =「Y」名稱=「棧」 – 2012-04-19 21:53:26

+0

(<\ S *元\ S +(*。 ?)name \ s * = \ s *「stack」)(\ s * />)起作用 – 2012-04-19 22:02:36

2

開始用下面的正則表達式...

<meta[^>]+name="stack" 

,代之以...

$0 value="overflow" 

$0替換字符串中表示整場比賽。然後,您只需追加value="overflow"即可。

這裏的工作的例子...

http://regexhero.net/tester/?id=586c2040-8700-4ea2-a146-1477ca1bcb62

只需點擊正則表達式英雄頂部的「.NET」按鈕,看到這種情況的.NET代碼。或者,這裏有一個簡化版本...

return Regex.Replace(text, @"<meta[^>]+name=""stack""", @"$0 value=""overflow"""); 
相關問題