正则表达式选择所有内容直到下一场比赛,包括新线

时间:2017-07-12 21:10:30

标签: regex match newline

我试图捕捉下面的对话,但正则表达式只捕获一行,我希望它能捕获任何人说的整个短语,直到下一个人说出其他任何内容。如果我使用/ s设置,'。+'将捕获所有内容,直到文件结束,直到下一个匹配

我是正则表达式的新手,对不起任何不好的解释

这是我到目前为止所得到的

正则表达式:

/([0-9]{2}\/[0-9]{2}\/[0-9]{2} [0-9]{2}\:[0-9]{2}\:[0-9]{2}: (.+):) (.+)/

What I want

Regex101 Fiddle

我将使用\ 2和\ 3来捕获谁说的和在for循环中说的短语所以我可以发短信

1 个答案:

答案 0 :(得分:0)

使用模式提取,然后处理一些LINQ:

var pattern = "^[0-9]{2}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}: (.+?): ((?:[^/]+(?:\n|$))+)";

var data = Regex.Matches(src, pattern, RegexOptions.Multiline).Cast<Match>().Select(m => new { who = m.Groups[1].Value, text = m.Groups[2].Value});