如何在C#中逐行阅读?
如何在下面的表达式中逐行阅读如何在C#中逐行阅读?,c#,.net,regex,C#,.net,Regex,如何在下面的表达式中逐行阅读 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 我想把这个表达式从当前时间写到当前时间。 例如: (?<=(?<=CurrentTime\=)[0-9].*)\n(.*) 到其他当前时间标志。您可以
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
我想把这个表达式从当前时间写到当前时间。
例如:
(?<=(?<=CurrentTime\=)[0-9].*)\n(.*)
到其他当前时间标志。您可以使用
(?sm)^CurrentTime=([^\n]*)\n(.*?)(?=^CurrentTime=|\z)
见
模式匹配
-行的开头(因为使用了^
修饰符)/m
-文字字符序列CurrentTime=
CurrentTime=
-匹配并捕获第1组中除换行符以外的零个或多个字符,并且只匹配以下换行符([^\n]*)\n
-第2组捕获零个或多个任意字符(包括使用DOTALL(.*)
修饰符后的换行符),但尽可能少,直到第一个字符/s
-(?=^CurrentTime=|\z)
在行首或字符串结尾(CurrentTime=
)\z
(?m)^CurrentTime=([^\n]*)\n([^\n]*(?:\n(?!CurrentTime=)[^\n]*)*)
看
在.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));
var input=“CurrentTime=04/24/16 09:57:23\nsan-ls-02022;ENEXRHO;1505;{调用Pm_I_AuthFailToPTSF(631706,-21,?)}\nass\nbbbb\nccurrentTime=04/24/16 09:57:23\n631706\naaa\nbbb\n”;
var pat=@“(?m)^CurrentTime=([^\n]*)\n([^\n]*(?:\n(?!CurrentTime=)[^\n]*)”;
var results=Regex.Matches(输入,pat)
.Cast()
.Select(p=>p.Groups[2].Value)//获取捕获组2的值
.ToList();
Console.WriteLine(string.Join(“\n--\n”,results));
见
请参见这是构建模式的最简单方法(遵循正向前瞻的惰性点匹配模式),您可以展开它以获得更好的性能。OP想要的只是:
san-ls-02022;ENEXRHO;1505;{呼叫Pm_I_AuthFailToPTSF(631706,-21,)}ass bbbb
OP不希望时间戳在CurrentTime之后..请检查此答案-。我现在正在喂我的女儿,如果你有困难,我会提供一个示例代码,比如应该有帮助,组[1]。Value
和组[2]。Value
将保存你需要的文本。如果你不需要CR,只需使用.Trim()
来去除前导/尾随空格。实际上在这个正则表达式中:(CurrentTime\=.*)((\n.*)+(CurrentTime\=.*)第二个组(\n.*)在“CurrentTimes”之间给我行。
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));