我正在尝试使用正则表达式从 C# 中的字符串中获取段落。 按段落;我的意思是以两个或多个\r\n 结尾的字符串 block 。 (不是 HTML 段落
)...
这里是一个示例文本:
For example this is a paragraph with a carriage return here
and a new line here.
At this point, second paragraph starts. A paragraph ends if double or more \r\n is matched or
if reached at the end of the string ($).
我尝试了该模式:
Regex regex = new Regex(@"(.*)(?:(\r\n){2,}|\r{2,}|\n{2,}|$)", RegexOptions.Multiline);
但这不起作用。它匹配以单个\r\n 结尾的每一行。我需要的是获取所有字符,包括单回车符和换行符,直到达到双\r\n。
最佳答案
.*
是贪婪的并且尽可能多地消耗。您的第二组 ()
有一个 $
,因此正在使用的表达式是 (.*)(?)
。为了让.*
不被贪婪,后面跟一个?
.
当您指定 RegexOptions.Multiline 时,.NET 将按换行符分割输入。使用 RegexOptions.Singleline 使其将整个输入视为一个。
Regex regex = new Regex(@"(.*?)(?:(\r\n){2,}|\r{2,}|\n{2,}|$)", RegexOptions.Singleline);
关于c# - .NET正则表达式: Get paragraphs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614760/