首页 > 解决方案 > 正则表达式问题 - 组的多个匹配项

问题描述

我有不同的文本。匹配的顺序和出现次数不同:

This is a text: <<<String(10)>>>\nToday is the: <<<Date(10)>>>

或者

<<<String(10)>>> This was a text: \nToday is the: <<<Date(10)>>>

或者

<<<String(10)>>><<<Date(10)>>> This was a text and a date...

现在我搜索一个正则表达式,它给了我一个匹配的数组。第一个例子应该给我:

['This is a text: ', '<<<String(10)>>>', '\nToday is the: ', '<<<Date(10)>>>']

我试过这样的事情:

/(.*?)(\<{3}.*?\>{3})/

这适用于第一个示例的顺序,但不适用于不同的顺序。请给我一个提示!

标签: javascriptregex

解决方案


使用

s.split(/(<{3}.*?>{3})/)

会做这项工作,但它会给出一个空条目。如果要删除它,可以使用:

s.split(/(<{3}.*?>{3})/).filter(str => str.length > 0)

var s = "This is a text: <<<String(10)>>>\nToday is the: <<<Date(10)>>>";
var arr = s.split(/(<{3}.*?>{3})/).filter(str => str.length > 0);
console.log(arr)


推荐阅读