Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c语言中带多行和分组的正则表达式#_C#_Regex_Regex Group - Fatal编程技术网

C# c语言中带多行和分组的正则表达式#

C# c语言中带多行和分组的正则表达式#,c#,regex,regex-group,C#,Regex,Regex Group,我正在努力使用下面文本中的正则表达式 30T1 Error: NIO from machine - sequence Nr. 1456 30T1 Error: Failure from Stud machine point Nr. 100 30T1 Warning: Stop at point not possible 30T1 Error " 10" FS130 Machine stops working 30T1 Error " 331" : Motor not working! 30

我正在努力使用下面文本中的正则表达式

30T1 Error: NIO from  machine - sequence Nr. 1456
30T1 Error: Failure from Stud machine point Nr. 100
30T1 Warning: Stop at point not possible 
30T1 Error " 10" FS130 Machine stops working
30T1 Error " 331"  : Motor not working!
30T1 Error " 331"  Stud Machine Failure: Motor not working!
30T1 Error " 331"  Stud Machine Failure: Motor not working!
30T1 Warning: " 11" FS130  working
30T1 Error: NIO from machine - sequence Nr. 1356
30T1 Warning: Stop at point not possible 
30T1 Error: Failure from Stud machine point Nr. 110
30T1 Error " 331"  Machine: not available!
30T1 Error " 10" FS130  stops working
30T1 Error " 332"  Stud Machine Failure: current not available!
我想匹配这样的输出并进行分组

30T1 Error: NIO from  machine - sequence Nr. 1456
30T1 Error: Failure from Stud machine point Nr. 100
30T1 Error " 331"  Stud Machine Failure: Motor not working!

30T1 Error: NIO from machine - sequence Nr. 1356
30T1 Error: Failure from Stud machine point Nr. 110
30T1 Error " 332"  Stud Machine Failure: current not available!
到目前为止,我提出了下面的正则表达式,它正在工作,但它只显示了第一行。我无法获得可用于多行的正则表达式

Regex模式我现在尝试的unitl:

(?<Error1>30T1\s+\w.+.?sequence\s+Nr.\s[0-9]+)
(?30T1\s++\w.+?序列\s+Nr.\s[0-9]+)

我不是正则表达式专家,我希望有人能启发我制作更好的正则表达式模式。

建议使用
IEnumerable
和Linq而不是正则表达式

结果:

30T1 Error: NIO from  machine - sequence Nr. 1456
30T1 Error: Failure from Stud machine point Nr. 100
30T1 Error " 331"  Stud Machine Failure: Motor not working!

30T1 Error: NIO from machine - sequence Nr. 1356
30T1 Error: Failure from Stud machine point Nr. 110
30T1 Error " 332"  Stud Machine Failure: current not available!
我猜您实际使用的是日志文件,在本例中:

  var filtered = MakeReport(File
    .ReadLines(@"C:\MyLog.log"));

  foreach (var line in filtered) 
    Console.WriteLine(line);

请你对过滤和分组更准确一点好吗?如我所见,您可以在新序列上启动新组,例如,
序列号1456
序列号1356
。你过滤掉所有的警告。但是为什么要跳过一些错误,例如
30T1 Error“10”FS130机器停止工作
?@DmitryBychenko此信息对我来说不是必需的,这就是为什么我跳过此项。到目前为止,我唯一需要的是正则表达式,它可以提供如上所述的所需输出。我明白了,但是为了编写/修改正则表达式,我们必须知道要包含什么和要排除什么。@DmitryBychenko好的。。你要什么我就给你什么<代码>机器-序列号螺柱机器点号螺柱机器故障字符串包含我想输入的上述信息,其余信息不需要。感谢代码,但行
控制台中存在一个问题。写入(string.Join(Environment.NewLine,filtered))它给了我一个错误重载方法,因为字符串具有无效参数。我在makereport方法中指定了行和makebreakpoint,但程序指针从未进入该方法。我不理解的代码有什么问题。@user152117:它在我的工作站上可以工作,但我们先去掉
string。Join
并将其命名为
foreach
;请看我的编辑。这很有效。但我仍然有一些问题。1.我假设正则表达式可以工作,因为我直接使用数据库。我希望可以直接使用regex从数据库中获取数据。你对这个问题有什么更好的建议吗。
30T1 Error: NIO from  machine - sequence Nr. 1456
30T1 Error: Failure from Stud machine point Nr. 100
30T1 Error " 331"  Stud Machine Failure: Motor not working!

30T1 Error: NIO from machine - sequence Nr. 1356
30T1 Error: Failure from Stud machine point Nr. 110
30T1 Error " 332"  Stud Machine Failure: current not available!
  var filtered = MakeReport(File
    .ReadLines(@"C:\MyLog.log"));

  foreach (var line in filtered) 
    Console.WriteLine(line);