2017-05-03 116 views
-2

根/元素1/element2的[@ attR1位= 'ABC'] /元素3 [attr3 = 'XYZ'] /元素4 /元素5 [attr4 = 'PQR'] /元素6 /元素7排除在正則表達式的搜索詞的列表

我想清除除attr4之外的上述xpath中的所有屬性。預期的輸出是 - root/element1/element2/element3/element4/element5 [attr4 ='pqr']/element6/element7

請問您可以幫忙嗎?

+0

什麼是與你的正則表達式的問題? – Rahul

+0

提示:定義一個只匹配所有屬性加上括號的正則表達式模式,但不匹配名稱爲attr4的屬性。如果你已經成功地定義了這個正則表達式,請在調用Regex.Replace(...)時用它替換xpath中所有出現的屬性的空字符串(「」)... – elgonzo

+0

這是我的正則表達式,可以匹配所有屬性\ [[^ \]] * \]我想知道如何在此模式中包含排除列表。 – user845392

回答

1

您可以使用下面的正則表達式來匹配所有不包含的屬性attr4。那麼你可以直接使用Regex.Replace()來擺脫所有這些。

(\[((?!attr4)[^\]])*\]) 

Regex Demo

代碼:

string input = "root/element1/element2[@attr1='abc']/element3[attr3='xyz']/element4/element5[attr4='pqr']/element6/element7"; 
Regex regex = new Regex(@"(\[((?!attr4)[^\]])*\])"); 
var output = regex.Replace(input, ""); 

輸出:

root/element1/element2/element3/element4/element5[attr4='pqr']/element6/element7 

Dotnet Fiddle

+0

而不是創建一個新的正則表達式一遍又一遍,我需要一個幫助,使它與參數編譯正則表達式,然後在運行時動態地將值傳遞給參數(attr4在運行時傳遞)。 – user845392