2017-02-28 271 views
2

我试图使用WebHarvy(.NET)的表达式来匹配段落中的第2行,在它们之间具有双换行符正则表达式匹配

这是第二线第一行

这是第二线

我一直在使用\n(.*)\n\n尝试,但它,而不是返回S的空换行符第二行。

请检查https://regex101.com/r/9GjHTM/1

请告知

感谢

+1

它是[说] (https://www.webharvy.com/articles/regex.html)你可以*捕获*你需要的东西,所以'\ n(。+)'似乎是有效的,除非你只有CR结束。你可以尝试'(?:\ r \ n?| \ n)(。+)'。或者'^。*(?:\ r \ n?| \ n)(。+)'。如果你想在匹配值中得到结果,使用逆序(但只有当WebHarvey真的在.NET正则表达式上运行时):'(?<= ^。*(?:\ r \ n?| \ n))。 +' –

+0

谢谢Wiktor。尝试所有这些,但它是返回一个空行,而不是文本的第二行 –

+2

好吧,也许限制量词将有所帮助(.NET中的正则表达式匹配CR,所以这可能是一个问题):'(? :\ r \ n?| \ n){2}(。+)'或'^。*(?:\ r \ n?| \ n){2}(。+)' –

回答

2

WebHarvey regex,你可以捕捉你所需要的:

WebHarvy将仅提取匹配的正则表达式字符串指定的group(s)正文的那些部分(一个或多个)。

所以,使用

(?:\r\n?|\n){2}(.+) 

该表达式相匹配:

  • (?:\r\n?|\n){2} - 一个CR(回车),随后 - 的
    • \r\n?正好两个事件({2}) 1或0(=可选)LF(换行符)
    • | - 或
    • \n - 一个LF(换行)
  • (.+) - 捕获组1(具有此子模式相匹配的子串会通过WebHarvey输出)
+0

请注意,您可以调整'(?:\ r \ n?| \ n)'以仅匹配所需的换行符样式。如果它们是'\ r \ n',则使用'(?:\ r \ n){2}',只要'\ n'使用'\ n {2}'。 –

2

尝试使用下面的正则表达式

\n.*?(?:\n\s(?=\w+\S)) 

看到demo/explanation

+0

这完美的作品。非常感谢 –

+0

嗨暹罗 - 我已经尝试了regex101上的表达式,它似乎工作正常,但是当我在web上尝试它时,它将返回一个空行。 Wiktor给出的表达式'(?:\ r \ n?| \ n){2}(。+)'正好相反,在regex101上不起作用,但在WebHarvy上正常工作。无论如何,非常感谢您的帮助。非常感谢:) –