正则表达式匹配模式后的单词

时间:2018-08-07 14:45:46

标签: c# regex

我不知道标题的措辞,因此我将在此处进行解释。我有这样的示例文本:

  

第1行
  行中的内容和文本。
  这是一段。

     

第2行
  这条线的那些。
  另一段

     

第3行
  更多内容。

     

第4行
  更多内容...

如何提取段落?我试过了:
(?:Line \d{1,3})(.*?)(?:Line \d{1,3})

该匹配的奇数段,如第1、3、5段等。 我正在使用C#,但这是正则表达式,所以我认为不会有太大的不同。

2 个答案:

答案 0 :(得分:1)

这是一种应该起作用的模式:

(Line \d+.*?)(?=Line|$)

这表示匹配以Line开头的段落,然后匹配所有内容,直到到达下一个段落的开头(即Line 。文本的结尾将出现在最后一段。

您还需要以点所有模式运行此正则表达式,如果没有,则将.*替换为[\s\S]*

Demo

答案 1 :(得分:1)

如果您只想选择没有“ Line \ d”模式的文本,则可以使用它。
这是对您的正则表达式的微调:

(?:Line \d+\n)(.*?)(?=\nLine \d+\n|$)

Check It

因为我们不能在后面使用通配符,所以我就像您使用了非捕获组一样,选择了文本,直到我们再次按下Line模式或文件末尾为止。