由于这是我在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
我有一个写/附加功能,允许用户附加一些文字并设置一点时间戳。
所以我的问题是:使用另一个函数,你可以在文本文件中搜索和替换文本,但是你可以猜到如果有人想要替换单词“Text”,它将被替换为xml-stylish评论(时间戳)同样。
我的结果到现在为止
content = Regex.Replace(content,"[^<+.*"+input+".*>+]*", replace);
//content = content of the .txt file, input = search term, replace = string to replace
但是这很难失败,因为一些正则表达式专业人士会在不执行它的情况下看到它。
现在我希望一些正则表达式专家可以帮助我,并为我提供一个替换正常文本但忽略时间戳的搜索模式。
到现在为止,我还没有真正意识到正则表达式的逻辑,但是我理解单个表达式,所以这对我来说更适合理解正则表达式。
感谢您的建议。
答案 0 :(得分:1)
如果我理解你的问题,你想要替换“Text”的每个实例,除了评论中的那个。
最简单的方法是使用负面的观察(奇妙的描述here),如下所示:
content = Regex.Replace(content, @"(?<!<!--.*?)" + input, replace);
你正在做的是试图替换任何长度不是&lt; +。*&gt;的字符的重复。或input
中包含的字符,其值为replace
。
如果你要与Regex合作很多,我强烈建议给网站上面一个很好的阅读。它是我发现的最好的Regex介绍,现在花的时间会为你节省很多麻烦!
修改强>
由于@stema
而更新以增加灵活性