使用regex c#删除文本部分

时间:2013-11-13 13:55:27

标签: c# regex

如何从包含标签的字符串块中删除[开始]和[结束]之间的文本部分?

是否有更简单的方法,而不是使用IndexOfSubstring等?

更新:我正在尝试使用

var output = Regex.Replace("[Start]SomeText[End]", @"(?<=[Start]).*(?=[End])", "");

但这种模式并不常用。它需要删除[开始]和[结束]

之间的所有内容

输入文字: [开始] Hello World [结束]

输出文字: [开始] [结束]

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

Regex rgx = new Regex(@"(?<=\[Start])(?s).+?(?=\[End])");
string output = rgx.Replace(input, "");

或者这会更快:

Regex rgx = new Regex(@"(?<=\[Start])(?>[^[]+|\[(?!End]))+(?=\[End])");
string output = rgx.Replace(input, "");

答案 1 :(得分:0)

[]是正则表达式中的特殊字符。

var output =
   Regex.Replace("[Start]SomeText[End]", @"(?<=\[Start\]).*(?=\[End\])", "");