1

我家里没有我的代码,但我意识到我需要对某个表达式进行正则表达式替换,我想知道是否有最佳实践。

我的代码目前正在做的是在文件中搜索匹配项,将这些匹配项从文件中取出(用 替换它们""),然后在处理完所有文件后,我调用 .NETProcess类来执行一些命令行操作。具体来说,我要做的是获取一组文件并将它们复制(合并)到一个最终输出文件中。但是有一个实例,每个要合并的文件都有完全相同的第一行,我们只是说这个例子是:

FIRST_NAME|MIDDLE_NAME|LAST_NAME|ADDRESS

现在,第一个文件没有问题。而且我认为我将进行最后一场比赛,并在文件合并后替换。但我只想在第一次出现后替换该特定表达式的匹配项。

所以,我读到 C# 对正则表达式的支持非常好?这是否是实现“在第一次出现匹配后替换匹配”的正确方法,如果是这样,您将如何在给定示例正则表达式的情况下实现它?

我自己对此的个人解决方案是返回文件夹中的文件数量,Directory.GetFiles然后foreach (string file in matches)我会声明一个快速条件,上面写着

if (count == directoryCount)
 do not match and replace
 count minus 1
elseif (count < directoryCount) 
 strip matching expression

然后foreach在第一次运行之后的每次迭代都会从文件中删除匹配的表达式,只留下第一个文件与我想要保留的表达式。

感谢您的任何建议。

4

2 回答 2

1

如何使用replaceFirst()来备份第一次出现并用一些字符标记它。然后使用replaceAll(), 并replaceFirst()再次回滚第一场比赛。

于 2013-07-31T06:51:47.100 回答
0

Regex.Replace有几个重载,这些重载是在返回替换MatchEvaluator evaluator时委托的。MatchString

所以你可以使用类似的东西re.Replace(input, m => first ? (first=false, m.Value) : "")(但我有一个 VB 程序员并且没有任何语法检查就把它放进去)。

于 2013-07-31T05:54:34.123 回答