有多种方法可以执行此类操作,具体取决于您的需要。但是,如果您想使用单个正则表达式操作来执行此操作,并且只想修复括号中的字符串之间的内容,那么您可以这样做:
string input = "<#String1#> + <#String2#> , <#String3#> --<#String4#>";
string pattern = "(?<=>)[^<>]+(?=<)";
string replacement = ",";
string result = Regex.Replace(input, pattern, replacement);
该模式使用[^<>]+ 来匹配任何非尖括号字符,但它将它与一个后向语句((?<=>))和一个前瞻语句(?=<) 相结合,以确保它只匹配出现在一组右括号和另一组左括号之间的文本。
如果您需要删除第一个 < 之前或最后一个 > 之后的文本,或者如果您发现环视语句令人困惑,您可能需要考虑简单地匹配括号之间的文本然后循环遍历所有匹配项并自己构建一个新字符串,而不是使用RegEx.Replace 方法。例如:
string input = "sdfg<#String1#> + <#String2#> , <#String3#> --<#String4#>ag";
string pattern = @"<[^<>]+>";
List<String> values = new List<string>();
foreach (Match m in Regex.Matches(input, pattern))
values.Add(m.Value);
string result = String.Join(",", values);
或者,使用 LINQ 做同样的事情:
string input = "sdfg<#String1#> + <#String2#> , <#String3#> --<#String4#>ag";
string pattern = @"<[^<>]+>";
string result = String.Join(",", Regex.Matches(input, pattern).Cast<Match>().Select(x => x.Value));