Javascript 正则表达式:匹配所有字符串,但捕获两个符号之间的组

Javascript 正则表达式:匹配所有字符串,但捕获两个符号之间的组,javascript,regex,split,Javascript,Regex,Split,问题: 给定此字符串: str = "this is<< just>> an example <<sentence>>" str=“这是一个>示例” 如何获取以下数组: arr = ["this is", "<< just>>", " an example ", "<<sentence>>"] arr=[“这是”、“>”、“一个例子”、“”] 尝试: 我可以拆分字符串,但是这会删除“” str

问题:

给定此字符串:

str = "this is<< just>> an example <<sentence>>"
str=“这是一个>示例”
如何获取以下数组:

arr = ["this is", "<< just>>", " an example ", "<<sentence>>"]
arr=[“这是”、“>”、“一个例子”、“”]
尝试:

我可以拆分字符串,但是这会删除“”

str.split(//)
=>[“这是”、“只是”、“一个例子”、“一句话”]
我可以匹配“”之间和包含“”的文本块,但是这缺少句子的其余部分

str.match(/(<{2})(.*?>{2})/g)
=> ["<< just>>", "<<sentence>>"]
str.match(/({2})/g)
=> [">", ""]

如何捕获字符串的其余部分以及单独的捕获组?

这里有一个选项-匹配
,或者匹配字符,直到前瞻匹配
拆分的点

const str=“这是一个>示例”
常数r=str.split(/()/g)

console.log(r)
简单解决方案-将匹配的组添加到拆分正则表达式中

var str=“这是一个>示例”
var result=str.split(/()/)
控制台日志(结果)
拆分,并使用
.filter(布尔)
筛选空值

const str=“这是一个>示例”
常量r=str.split(/()/g).filter(布尔值)
console.log(r)
str.match(/(<{2})(.*?>{2})/g)
=> ["<< just>>", "<<sentence>>"]