匹配空行

时间:2017-02-13 19:45:33

标签: regex

我的文字格式如下:

(empty line)
stuff here
more stuff here
maybe even more here
(empty line)
stuff here
more stuff here
maybe even more here
(empty line)

我需要抓住空行之间的内容。我试过^\s*$.+?^\s*$,但它似乎无法正常工作。

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式:

(?:\r?\n|^)((?:\r?\n|.)+?)(?=\r?\n\r?\n|$)
  • (?:\r?\n|^)匹配字符串的开头或换行符(Windows为\r\n,UNIX为\n
  • ((?:\r?\n|.)+?)匹配包含换行符在内的任何字符至少一次,但非贪婪,将其包含在一个组中$1
  • (?=\r?\n\r?\n|$)标记双线中断或字符串$的结尾作为匹配结束。这是通过积极的前瞻来完成的,以防止在比赛中包含双线中断。
  • 确保使用全局标记/g

以下是一个实例:https://regex101.com/r/69gLk9/1

您还可以将许多编程语言的split()函数与以下正则表达式结合使用:

\r?\n\r?\n

var text = "This is text.\nThis is text.\nThis is text.\nThis is text.\nThis is text.\n\nThis is text.\nThis is text.\nThis is text.\n\nThis is text.\nThis is text.\n\nThis is text.\nThis is text.";
var regex = /\r?\n\r?\n/g;

var match = text.split(regex);
console.log(match);

答案 1 :(得分:0)

This是您问题的答案。

`/^\n((?:\n|.)*?)\n$/gm`

工作原理:

^\n从行尾开始,因此行必须为空 ((?:\n|.)*?)捕获任何新行或任何字母的数量 \n$以结束行字符

结束

请勿忘记添加globalmultiline标记