gpt4 book ai didi

c# - 如何在 C# 中逐行读取?

转载 作者:行者123 更新时间:2023-11-30 23:25:17 25 4
gpt4 key购买 nike

如何逐行读取下面的表达式?

CurrentTime=04/24/16 09:57:23
san-ls-02022;ENEXRHO;1505;{call Pm_I_AuthFailToPTSF(631706,-21,?)}
ass
bbbb
CurrentTime=04/24/16 09:57:23
631706
aaa
bbb

我想把这个表达式 current time 写成 current time 。例如:

(?<=(?<=CurrentTime\=)[0-9].*)\n(.*) 

我写了这个公式,但没有解决我的问题。它只是在当前时间之后读取一行。但我想阅读所有行:

san-ls-02022;ENEXRHO;1505;{call Pm_I_AuthFailToPTSF(631706,-21,?)}
ass
bbbb

到其他当前时间标志。

最佳答案

你可以使用

(?sm)^CurrentTime=([^\n]*)\n(.*?)(?=^CurrentTime=|\z)

参见 regex demo

模式匹配

  • ^ - 行首(因为使用了 /m 修饰符)
  • CurrentTime= - 文字字符序列 CurrentTime=
  • ([^\n]*)\n - 匹配并捕获第 1 组除换行符以外的零个或多个字符,并且将仅匹配以下换行符
  • (.*?) - 第 2 组捕获零个或多个任何字符(包括换行符,因为使用了 DOTALL /s 修饰符)但尽可能少, 直到第一个
  • (?=^CurrentTime=|\z) - CurrentTime= 在一行的开头,或者字符串的结尾 (\z)

性能更新

要展开当前的正则表达式,只需使用带有一些额外分组和否定前瞻的否定字符类:

(?m)^CurrentTime=([^\n]*)\n([^\n]*(?:\n(?!CurrentTime=)[^\n]*)*)

参见 another regex demo

在 .NET 中:

var input = "CurrentTime=04/24/16 09:57:23\nsan-ls-02022;ENEXRHO;1505;{call Pm_I_AuthFailToPTSF(631706,-21,?)}\nass\nbbbb\nCurrentTime=04/24/16 09:57:23\n631706\naaa\nbbb\n"; 
var pat = @"(?m)^CurrentTime=([^\n]*)\n([^\n]*(?:\n(?!CurrentTime=)[^\n]*)*)";
var results = Regex.Matches(input, pat)
.Cast<Match>()
.Select(p => p.Groups[2].Value) // Get the capture group 2 values
.ToList();
Console.WriteLine(string.Join("\n---\n", results));

参见 Ideone demo

参见 regex demo at RegexStorm

关于c# - 如何在 C# 中逐行读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390160/

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