2017-02-28 332 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上正常工作。無論如何,非常感謝您的幫助。非常感謝:) –