如何在javascript中使用正则表达式匹配段落?

如何在javascript中使用正则表达式匹配段落?,javascript,regex,Javascript,Regex,我想要一个匹配段落的正则表达式,例如: 红棕色的狐狸做了些什么。 我不记得这段文字了 [新行] [新行] 所以,我会说废话。 [新线]废话 将返回如下数组: ['The red brown...', 'So instead I'll say...'] 我已经有了这个正则表达式(我偷的,嘘):/(?:[^\r\n]|\r(?!\n))+/gm 但是,此模式同时匹配换行符(一个换行符)和段落换行符(两个换行符)。如何在段落之间匹配正文,而不在单个换行符之间分割匹配?您可以使用此正则表达式/(.+)

我想要一个匹配段落的正则表达式,例如:

红棕色的狐狸做了些什么。 我不记得这段文字了

[新行]

[新行] 所以,我会说废话。 [新线]废话

将返回如下数组:

['The red brown...', 'So instead I'll say...']
我已经有了这个正则表达式(我偷的,嘘):
/(?:[^\r\n]|\r(?!\n))+/gm


但是,此模式同时匹配换行符(一个换行符)和段落换行符(两个换行符)。如何在段落之间匹配正文,而不在单个换行符之间分割匹配?

您可以使用此正则表达式
/(.+)((\r?\n.+)*)/gm
仅捕获可视为段落的内容。根据您的描述,段落可以有普通文本和单行换行符。下面的示例实现了此解决方案

//原始输入
变量输入=`
红棕色的狐狸做了些什么。
我不记得这篇课文了
所以,我会说废话。
废话。
另一段
`;
文件。书写(“
原名”

”); }
pre{
背景颜色:浅灰色;
边际:2px0;
}
人力资源{
边界:无;
保证金:0;
填充:0;

}
您可以使用带有
{2,}
的换行符(顺序,取决于换行符样式)拆分:

var s=“红棕色狐狸,做了些什么。\r\n我不记得这段文字。\r\n\r\n所以,我会说废话。\r\n废话。”;

log(s.split(/(?:\r\n){2,}/).match(/(?:。)(?:。|)(?:\r?\n | \r)(?!\r?\n | \r))+//g)
,但我不喜欢它。这很好:
s.match(/。+(?:\r?\n |\r)(?!\r?\n |\r.*)*/g)
。拆分更好:
var s=“红棕色狐狸,做了些什么。\r\n我不记得这段文字。\r\n\r\n所以,我会说废话。\r\n废话。”;log(s.split(/(?:\r\n){2,}/g))@WiktorStribiżew谢谢,拆分成功了!这仍然匹配单换行符,而不仅仅是段落。@SebastianOlsen您希望段落内有换行符吗?是的,我希望段落内有换行符。@SebastianOlsen迟回复,但我已更新了答案。