C# 使用正则表达式从许多文件中获取特定数据
为了从原始数据(有史以来都很奇怪的日志文件)中获取特定数据,我面临一些问题。 基本上,我需要获得SerialNumber+测量结果,如下所示: 输出文件:results.txt 文件内容:123456789124,1.521978E-04(100多个文件的结果相同) 此时,我可以获取序列号,但我在获取测量结果时遇到了一些问题。这是我的密码:C# 使用正则表达式从许多文件中获取特定数据,c#,regex,C#,Regex,为了从原始数据(有史以来都很奇怪的日志文件)中获取特定数据,我面临一些问题。 基本上,我需要获得SerialNumber+测量结果,如下所示: 输出文件:results.txt 文件内容:123456789124,1.521978E-04(100多个文件的结果相同) 此时,我可以获取序列号,但我在获取测量结果时遇到了一些问题。这是我的密码: static void Main(string[] args) { Regex regex = new Regex(@"(?<
static void Main(string[] args)
{
Regex regex = new Regex(@"(?<={@BTEST\|)(.*?)(?=\|)");
string LogPath = @"C:\Data\FailedLogs";
var LogDBSNResult = @"C:\results1.txt";
List<string> fileNames = new List<string>(Directory.GetFiles(LogPath));
List<string> dbSerialNumbers = new List<string>();
using (System.IO.StreamWriter file = new System.IO.StreamWriter(LogDBSNResult))
{
foreach (var filename in fileNames)
{
string fileContent = File.ReadAllText(filename);
if (regex.IsMatch(fileContent))
{
var result = regex.Match(fileContent).ToString();
// Adding the results in the list
dbSerialNumbers.Add(result);
Console.WriteLine("Found: " + result);
file.WriteLine(result);
}
}
//List<string> removeDuplicated = dbSerialNumbers.Distinct().ToList();
//foreach (var value in removeDuplicated)
//{
// file.WriteLine(value);
//}
}
}
static void Main(字符串[]args)
{
Regex Regex=new Regex(@“(?我建议您将搜索、提取序列的模式和提取测量结果的其他模式分开。尝试一下:
string patSerial = @"(?<={@BTEST\|)(.*?)(?=\|)";
string patMeasur = @"(?<={@A-CAP\|\d\|.)(.*?)(?=\{)";
string LogPath = @"C:\Data\FailedLogs";
string LogDBSNResult = @"C:\results1.txt";
using (StreamWriter log = new StreamWriter(LogDBSNResult))
{
foreach(string fileName in Directory.GetFiles(LogPath))
{
string fileContent = File.ReadAllText(fileName);
if (Regex.IsMatch(fileContent, patSerial) && Regex.IsMatch(fileContent, patMeasur))
{
string serial = Regex.Match(fileContent, patSerial).Value;
string measurement = Regex.Match(fileContent, patMeasur).Value;
log.WriteLine($"{serial}, {measurement}");
}
}
}
string patSerial=@”(?示例数据是当前代码的结果,还是您希望从中获取的源文件12345678124
和1.521978E
?预期结果是什么?Hi@Thefourthbird-日志文件具有@{RPT contents这是收入数据,预期结果将是一个txt文件,包含:12345678124,1.521978E-04(每个结果一个文件)。谢谢!问题中给出的所需输出不包括+
,但如果测量值为负值…谢谢!工作正常!非常欢迎。祝你好运。
string patSerial = @"(?<={@BTEST\|)(.*?)(?=\|)";
string patMeasur = @"(?<={@A-CAP\|\d\|.)(.*?)(?=\{)";
string LogPath = @"C:\Data\FailedLogs";
string LogDBSNResult = @"C:\results1.txt";
using (StreamWriter log = new StreamWriter(LogDBSNResult))
{
foreach(string fileName in Directory.GetFiles(LogPath))
{
string fileContent = File.ReadAllText(fileName);
if (Regex.IsMatch(fileContent, patSerial) && Regex.IsMatch(fileContent, patMeasur))
{
string serial = Regex.Match(fileContent, patSerial).Value;
string measurement = Regex.Match(fileContent, patMeasur).Value;
log.WriteLine($"{serial}, {measurement}");
}
}
}