C# 使用正则表达式c删除文本部分#
如何从包含标记的字符串块中删除[Start]和[End]之间的一段文本 有没有比使用C# 使用正则表达式c删除文本部分#,c#,regex,C#,Regex,如何从包含标记的字符串块中删除[Start]和[End]之间的一段文本 有没有比使用IndexOf和Substring等更简单的方法 更新:我正在尝试使用 var output = Regex.Replace("[Start]SomeText[End]", @"(?<=[Start]).*(?=[End])", ""); var output=Regex.Replace(“[Start]SomeText[End]”,@“(?[和]是Regex中的特殊字符 var output =
IndexOf
和Substring
等更简单的方法
更新:我正在尝试使用
var output = Regex.Replace("[Start]SomeText[End]", @"(?<=[Start]).*(?=[End])", "");
var output=Regex.Replace(“[Start]SomeText[End]”,@“(?[
和]
是Regex中的特殊字符
var output =
Regex.Replace("[Start]SomeText[End]", @"(?<=\[Start\]).*(?=\[End\])", "");
var输出=
Regex.Replace(“[Start]SomeText[End]”,@”(?您可以尝试以下方法:
Regex rgx = new Regex(@"(?<=\[Start])(?s).+?(?=\[End])");
string output = rgx.Replace(input, "");
Regex rgx=new Regex(@)(?需要解释一下吗?你能举一个例子说明它在哪些方面没有达到你预期的效果(以及你期望的结果是什么)?更新了,我以为你想“删除一部分文本(…)包括标记“为什么第二个更快?”@友好:因为第一个使用惰性量词,并且必须检查每个字符后面是否有[End]
。第二个必须检查后面是否有End]
,仅当遇到的字符是[
Regex rgx = new Regex(@"(?<=\[Start])(?>[^[]+|\[(?!End]))+(?=\[End])");
string output = rgx.Replace(input, "");