2011-09-14 90 views
2

首先,我知道你不應該嘗試使用正則表達式來修改XML,這是一個特殊情況,我必須這樣做,而不是使用解析器。正則表達式替換XML標籤(不是內容)

我想這一點:

<nicetag_A-B>Teststring X-Y</nicetag_A-B> 

看起來像這樣:

<nicetag_>Teststring X-Y</nicetag_> 

總之,我想刪除[任何字母] - 只能從標籤[任何字母]但是,不是裏面的實際內容。

這是我的正則表達式到目前爲止:

Regex.Replace(inputString, @"(<.*?[a-zA-Z])\-([a-zA-Z].*?>)", "$1$2"); 

這裏的問題是,它僅適用於上面的例子,如果標籤將不AB具名的內部內容(XY)將被替換代替。

任何想法?

回答

1

你的例子不工作,它只替換標籤中的連字符。

試試這個位置

(<[^>]*)[a-zA-Z]\-[a-zA-Z]([^>]*) 

$1$2

更換看到它online here on Regexr

+0

完美,它的工作!是的,Regexr踢屁股:) – Andreas

0

您可以嘗試[^>\s]*(匹配除>和空格之外的所有內容)而不是.*,以確保您仍處於標籤名稱中。

0

你就不能與>取代[a-zA-Z]-[a-zA-Z]>