首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将跨越多行的多个匹配组合为单个匹配。

将跨越多行的多个匹配组合为单个匹配。
EN

Stack Overflow用户
提问于 2020-04-15 06:58:43
回答 1查看 69关注 0票数 1

我想要匹配跨越多行的连续内容,这些行被标记为>

示例:

代码语言:javascript
复制
Some text      <- is not matched
Another Text   <- also ignored
> This should be included
> And also this
> This as well
But not this   <- ignored

匹配只应返回此值(作为完全匹配或单个捕获组):

代码语言:javascript
复制
This should be included
And also this
This as well

我目前的方法是这个正则表达式(JavaScript):

代码语言:javascript
复制
/(?:(?<=^> ).+\n)+/gm

它确实正确地捕获了我需要的内容,但它没有将三行匹配线组合成一个匹配(因此它生成三个单独的匹配,而不是one)。

为什么不把三组非捕捉组比赛分成一组呢?

是否有可能仅用JavaScript正则表达式来完成此任务?

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 07:08:58

使用您的模式,您将得到3个匹配,而不是1个匹配,因为当移动到下一行时,这个断言(?<=^> )是不正确的,因此引擎将向前移动寻找下一个可能的匹配。

获得结果的一个选项是使用模式首先获取所有匹配,然后对所有>部件执行第二次替换。

代码语言:javascript
复制
^> .+(?:\r?\n>.*)*

Regex演示

代码语言:javascript
复制
const regex = /^> .+(?:\r?\n> .+)*/gm;
const str = `Some text
Another Text
> This should be included
> And also this
> This as well
But not this`;

let result = str.match(regex)[0].replace(/^> /gm, "");
console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61223031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档