我需要在特定的两行之间替换文本文件中的内容。所以我打算使用reguler表达式。
这是我的.txt
文件
text text text text text text
text text text text text text
text text text text text text
//DYNAMIC-CONTENT-START
text text text text text text
text text text text text text
//DYNAMIC-CONTENT-END
text text text text text text
text text text text text text
我需要替换//DYNAMIC-CONTENT-START
和//DYNAMIC-CONTENT-END
之间的内容。这是我将使用正则表达式的C#代码。
File.WriteAllText("Path", Regex.Replace(File.ReadAllText("Path"), "[Pattern]", "Replacement"));
所以我的问题是我可以在这里使用的正则表达式([pattern]
)是什么?
答案 0 :(得分:1)
尝试:
(?is)(?<=//DYNAMIC-CONTENT-START).*?(?=//DYNAMIC-CONTENT-END)
答案 1 :(得分:0)
在你的情况下,我建议你以其他方式做(逐行解析以提高性能)。我可以看到你只是用替换的文本重写从输入到输出的文件,所以在我看来,读入整个内存是没有意义的。 如果您不想使用这种方法,请参阅Tim Tang的回答。
using (var reader = new StreamReader(@"C:\t\input.txt"))
using (var writer = new StreamWriter(@"C:\t\Output.txt"))
{
string line;
var insideDynamicContent = false;
while ((line = reader.ReadLine()) != null)
{
if (!insideDynamicContent
&& !line.StartsWith(@"//DYNAMIC-CONTENT-START"))
{
writer.WriteLine(line);
continue;
}
if (!insideDynamicContent)
{
writer.WriteLine("[replacement]");
// write to file replacemenet
insideDynamicContent = true;
}
else
{
if (line.StartsWith(@"//DYNAMIC-CONTENT-END"))
{
insideDynamicContent = false;
}
}
}
}