gpt4 book ai didi

c# - 如何为特定字符匹配 N 次后的新行?

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:53 26 4
gpt4 key购买 nike

我正在尝试匹配 CSV 类文件中的所有新行。问题是大文件总是带有一些虚线,例如:

123|some string field|person 123|some optional open comment|324|213
133|some string field|person||324|213
153|some string field|person 123|some comment|324|213
126|some string field|another id|some open and
new line comment|324|213
153|string field|person 123|some comment|324|213
153|string field|person 123|another broken line
comment|324|213
133|field|person||324|213

因此,为了解决这种情况,我使用了以下逻辑:

    string ZSUR = File.ReadAllText(filePath);
string originalFilePath = filePath;

// Regular Expression to fix line break issues
Regex RE = new Regex(@"[\r\t\n]+([^0-9\r\t\n]{3}[^|\r\t\n])");

ZSUR = RE.Replace(ZSUR, "$1");

// Backup the original file
string[] backupFilePath = Regex.Split(filePath, @".txt$");
File.Delete(backupFilePath[0] + "_BACKUP.txt");
File.Move(originalFilePath, backupFilePath[0] + "_BACKUP.txt");

// And then save on the same path the fixed file
File.WriteAllText(originalFilePath, ZSUR);

它解决了 90% 的情况,因为正确行的第一部分总是以三位数字开头,后跟竖线。

但我不知道为什么它与这样的情况不匹配:

126|some string field|another id|some open and
double newlined
123 coment|324|213
153|some string field|person 123|some comment|324|213
153|some string field|person 123|some comment|324|213
153|string field|person 123|Please split this line
31 pcs: 05/03/2013
31|324|213
153|some string field|person 123|some comment|324|213

如您所见,我需要一种不同的方法来解决这个问题。我知道在我有 N 次管道后,那个烦人的评论字段就在那里。那么,有什么方法可以匹配从一行开始的 N 个管道之后的所有新行和类似行吗?

也欢迎其他想法。

编辑:感谢大家的回答。

我使用以下正则表达式解决了这个问题:

(?<!\|[CA]?\|([0-9]{2}.[0-9]{2}.[0-9]{4})?)[\n\r]+

当然,我的真实文件与发布的示例略有不同,但主要思想只是匹配所有新行 [\n\r]+ 之前没有

(?<! ... ) 

表达式。

最佳答案

您可以像这样处理所有内容,其中“清理”是您定义的方法。

var prev = string.Empty;
const int requiredValueCount = 6;

foreach (var line in lines2.Split(new[] {Environment.NewLine}, StringSplitOptions.None))
{
var values = (prev + line).Split('|');

if (values.Length == requiredValueCount)
{
prev = string.Empty;
Clean(values);
}
else
{
prev += line;
}
}

关于c# - 如何为特定字符匹配 N 次后的新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com