gpt4 book ai didi

javascript - 获取仅以关键字开头并以分隔符列表分隔的出现次数列表

转载 作者:行者123 更新时间:2023-12-02 14:49:11 25 4
gpt4 key购买 nike

任务

例如,我需要从 block 中获取所有 (test\d+),以关键字 start 开头,并用 and 分隔,& 分隔符。

bla bla start test1, test2, test3 and test4 & test12 but not test5, 
test6 or test33, and start test100.

所以我应该得到test1、test2、test3、test4、test12、test100

沙盒

我已经使用正则表达式一段时间了,有一个半途而废的解决方案。 I got blocks correctly, but it extracts only one last occurance .

start\s(?:(test\d+)(?:\s?(?:[,&]|and)\s?)?)+

最佳答案

这无法在单个正则表达式中完成。您需要使用 Array.prototype.map() function 分 2 步完成此操作。带回调:

var str = 'bla bla start test1, test2, test3 and test4 & test12 but not test5, \ntest6 or test33, and start test100';

var m = str.match(/\bstart((?:\s*(?:[,&]|and)?\s*test\d+\b)+)/g).map(function(val) {
return val.match(/\btest\d+/g);
})

console.log(m[0]);
//=> ["test1", "test2", "test3", "test4", "test12"]

console.log(m[1]);
//=> ["test100"]
<小时/>

根据下面的评论,这里是一个 PCRE 正则表达式,可以使用单个正则表达式来解决它:

(?:\bstart|(?<!^)\G)\s*(?:[,&]|and)?\s*(test\d+)

RegEx Demo

关于javascript - 获取仅以关键字开头并以分隔符列表分隔的出现次数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36325811/

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