我没有我的代码在家里,但我意识到我需要做一个正则表达式替换一个特定的表达式,我想知道是否有一个最佳做法。替换第一个正则表达式的每一个匹配项,除了第一个?
什么,目前我的代码做的是寻找在文件中的比赛,采取这些匹配出文件(有""
代替),然后一旦所有文件都处理我做的.NET Process
类调用做一些命令行的东西。具体来说,我将要做的是将一组文件复制到一个最终输出文件中(合并)。但每一个地方要合并的文件具有完全相同的第一线的情况下,这让我们只说对的例子是:
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
后第一次运行将从文件中去除匹配的表达式,只保留具有我想保留的表达式的第一个文件。
谢谢你的任何建议。
我想过编写合并步骤来跳过每个文件栏的第一行,首先会比合并文件更高效,然后必须将整个合并文件吸引到一个大字符串中,以便能够运行一个正则表达式。 –
@Damien_The_Unbeliever而不是使用目录计数我只是在之前设置了一个布尔值,然后在第一遍中将其更改为false,以便通过foreach的下一次运行将取出该行。然后,在处理完所有文件之后,我执行一个正则表达式。使用空行标识符替换multiLine属性的空行块。 –