排除正则表达式搜索中的单词列表

时间:2017-05-03 19:19:26

标签: c# regex regex-negation regex-lookarounds regex-group

根/元素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

你能帮忙吗?

1 个答案:

答案 0 :(得分: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