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

exclude list of words in the Regex search

root/element1/element2[@attr1='abc']/element3[attr3='xyz']/element4/element5[attr4='pqr']/element6/element7

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

你能帮忙吗?

您可以使用以下正则表达式匹配所有不包含 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