我有一个类似的字符串,
string str = "(50%silicon +20%!(20%Gold + 80%Silver)| + 30%Alumnium)";
Run Code Online (Sandbox Code Playgroud)
我需要一个正则表达式来替换它们之间的内容!和| 用空字符串.结果应该是(50%silicon +20% + 30%Alumnium).
如果字符串包含类似的内容(使用嵌套分隔符):
string str = "(50%silicon +20%!(80%Gold + 80%Silver + 20%!(20%Iron + 80%Silver)|)|
+ 30%Alumnium)";
Run Code Online (Sandbox Code Playgroud)
结果应该是(50%silicon +20% + 30%Alumnium)- 忽略嵌套分隔符.
我尝试了以下正则表达式,但它不会忽略嵌套:
Regex.Replace(str , @"!.+?\|", "", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
小智 5
您正在使用惰性量词+?,它将查找与您的正则表达式匹配的最小可能子字符串.要获得您正在寻找的结果,您需要使用+与最大子串匹配的贪心量词.
以下正则表达式(未在C#中测试,因为我没有它可用,但这适用于任何标准正则表达式实现)将执行您想要的操作:
'!.+\|'