C#Regex Replace忽略特定字符串

本文关键字:字符串 Replace C#Regex | 更新日期: 2023-09-27 18:00:42

由于这是我在stackoverflow上的第一个问题,我希望我的问题被问对了。

基本上,我有一个普通的.txt文件,其中包含任何文本,如:

car accident
people died
cat without owner

<!-- Text added at 6/29/2011 9:20:38 AM -->
Some addintional Text
other Text added
add Text

我有一个写/附加功能,允许用户附加一些文本并设置一个小时间戳。

所以我的问题是:使用另一个函数,你可以搜索并替换文本文件中的文本,但正如你所猜测的,如果有人想替换单词"文本",它也会被替换在xml风格的注释(时间戳)中。

到目前为止,我的成绩是

content = Regex.Replace(content,"[^<+.*"+input+".*>+]*", replace);
//content = content of the .txt file, input = search term, replace = string to replace

但这失败得很惨,正如一些regex专业版在不执行它的情况下所看到的那样

现在,我希望一些regexpro可以在这里帮助我,并为我提供一个搜索模式,它取代了普通文本,但忽略了时间戳。

直到现在,我还不知道regex的逻辑,尽管如此,我理解单个表达式,所以这将是我更正确地理解regex的一个钩子。

谢谢你的建议。

C#Regex Replace忽略特定字符串

如果我正确理解您的问题,您希望替换除注释中的实例之外的所有"Text"实例。

最简单的方法是使用负面的后备(这里的精彩描述)如下:

content = Regex.Replace(content, @"(?<!<!--.*?)" + input, replace);

您正在做的是尝试替换非<+字符的任何长度的重复。*>或者CCD_ 1中包含的字符与CCD_。

如果你要和Regex合作很多,我强烈建议你好好阅读上面的网站。这无疑是我发现的Regex最好的介绍,现在花的时间以后会帮你省去很多麻烦!

编辑

通过@stema

更新以增加灵活性