我试图计算一些文字后我使用\ 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;
答案 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)