正则表达式匹配模式

时间:2016-05-26 15:44:15

标签: c# .net regex

我试图计算一些文字后我使用\ n \ n \ n(3个换行符)的次数。它几乎就像我喜欢的那样,问题是你垃圾邮件的新行是我不想要的。

编辑:好像来自regexr的正则表达式不支持.net所以我必须想出一个适用于.net的模式。

正则表达式将检查的文本示例:

  

某事的描述

     

text \ n \ n \ n //这将使DescriptionAmount ++

     

某事的描述

     

text \ n \ n \ n //这将使DescriptionAmount ++

     

\ n \ n \ n //这不应该添加在DescriptionAmount

这是我到目前为止所做的代码。

int DescriptionAmount = Regex.Matches(somestring, "[^\w$](\r\n){2}[^\w$]").Count;

2 个答案:

答案 0 :(得分:1)

尝试使用量词{x,y}来选择要匹配的令牌数。

'*'将匹配前面的字符0或多次,这意味着它将匹配第3个标记之后的任何\ n。

\ n {3}表示\ n必须匹配3次,不能再少。

我发现这个工具http://regexr.com/对于构建和调试正则表达式语句非常有用。

答案 1 :(得分:0)

为确保您在某些文字之后捕获3个换行符,请执行以下操作:

\w+\s*\n{3}

由于这是.net,你需要在前面放一个@:

@"\w+\s*\n{3}

或逃避斜杠:

"\\w+\\s\n{3}

您提到您正在搜索三个\n,但您的搜索有\r\n。如果您正在寻找\r\n,只需在\r前面添加\n,在上面的表达式中为(\\r\\n)(\r\n)添加()。

另一件事,根据某些字符串中的文字,您可能想要应用多行选项,如:

Regex.Matches(somestring, "\\w\\s\n{3}", RegexOptions.Multiline)