删除文件正则表达式中两个标签之间的文本块

时间:2019-11-14 12:54:41

标签: c# regex

我正在用C#创建一个数字标牌应用程序,并且在删除2个部分之间的文本块时遇到了麻烦。我要删除的文字在[Video]和[Video_END]

之间

在查看其他示例后,我一直尝试使用正则表达式来实现此目的,但是却出现编译器错误:

CS1502:“ System.Text.RegularExpressions.Regex.Replace(字符串,字符串,字符串,System.Text.RegularExpressions.RegexOptions)”的最佳重载方法匹配” 有一些无效参数

这是我的代码:   StringBuilder newFile = new StringBuilder();

    string[] file = File.ReadAllLines(@"C:\Intranet\Net\ProjectApollo\Screens\"+location);

var output = Regex.Replace(text, @"(?<=\[VIDEO\]).*(?=\[VIDEO_END\])", "", RegexOptions.Multiline);

我正在从一个示例中进行工作,并将2个标签更改为[VIDEO]和[VIDEO_END]

我通过这样做设法克服了编译器错误:

  

var输出= Regex.Replace(file.ToString(),@“(?<= [VIDEO])。*(?= [VIDEO_END])”,“”,RegexOptions.Multiline);

    File.WriteAllText(@"C:\Intranet\Net\ProjectApollo\Screens\" + location, output);

但是,当我查看文件时,它删除了文件的所有内容。

我已经尝试过了:

  

字符串文本= text.ReadAllText(@“ C:\ Intranet \ Net \ ProjectApollo \ Screens \” + location);

然后

  

var output = Regex.Replace(text,@“(?s)(?<= [VIDEO])。*(?= [VIDEO_END])”,“”);

     

text.WriteAllText(@“ C:\ Intranet \ Net \ ProjectApollo \ Screens \” +位置,输出);

文件说它已经更改了,但查看后,VIDEO和VIDEO_END之间的内容仍然存在。

还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

您正在将string[] file传递到Regex.Replace。相反,您应该迭代string[] file(也许最好使用string[] lines并逐行处理它。

string[] file = File.ReadAllLines ...

file.Select(line=>Regex.Replace(line,...)) 
相关问题