gpt4 book ai didi

javascript - 如何从非捕获组中获取所有不匹配的文本部分

转载 作者:行者123 更新时间:2023-11-29 22:52:10 25 4
gpt4 key购买 nike

我的正则表达式如下

/({{(?:(?:(?:for|if|while):\w+)|(?:do))}})|(?:{{(?:fi|endfor|dowhile:\w+)}})/g

我的示例输入如下

This is a sample {{if:val2}}abc{{fi}} injection{{while:val3}} {{endwhile}} string {{for:val}}repeated text{{endfor}} asdb lasdfk {{do}} basdf {{dowhile:val4}} asldf lkjasdf lajsdf aljsdf lkjasdf lasdf. 

匹配如下

enter image description here

我想要所有其他不匹配的文本作为组。

我可以使用正则表达式的 RegExp.execlastIndex 值来使用 javascript 创建组。

但是有什么方法可以使用 RegExp 本身来实现这一点吗?

最佳答案

在将模式中的所有捕获组转换为非捕获组后,您可以使用 String#split:

s.split(/{{(?:(?:for|if|while):\w+|do|endwhile)}}|{{(?:fi|endfor|dowhile:\w+)}}/)

如果保留一个捕获组,它将与匹配的部分一起输出。

JS 演示:

var s = 'This is a sample {{if:val2}}abc{{fi}} injection{{while:val3}} {{endwhile}} string {{for:val}}repeated text{{endfor}} asdb lasdfk {{do}} basdf {{dowhile:val4}} asldf lkjasdf lajsdf aljsdf lkjasdf lasdf.';
var rx = /{{(?:(?:for|if|while):\w+|do|endwhile)}}|{{(?:fi|endfor|dowhile:\w+)}}/;
console.log(
s.split(rx)
)
// Getting rid of blank items and trim:
console.log(
s.split(rx)
.filter(function (x) { return x.trim() != ""; })
.map(function (x) { return x.trim(); })
)

关于javascript - 如何从非捕获组中获取所有不匹配的文本部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57326413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com