javascript - 正则表达式问题 - 组的多个匹配项
问题描述
我有不同的文本。匹配的顺序和出现次数不同:
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})/
这适用于第一个示例的顺序,但不适用于不同的顺序。请给我一个提示!
解决方案
使用
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)
推荐阅读
- reactjs - 使用反应路由器路由到不同组件以获得类似路由
- perl - 用 tr 转义正斜杠
- ssl - 设置 sslmode=verify-ca 后无法验证主机名
- go - 主要重新声明
- postgresql - 如何将值传递给类型参数从一个函数到另一个
- sql - 在 SQL Server 2014 中的一列上选择 DISTINCT
- python - 无法对 Pandas 数据框中的数据进行子集化
- clojure - 无法从 Clojure 调用特定的 java 方法
- puppeteer - 使用 Passport Facebook 的会话抓取 Facebook
- javascript - 正则表达式难题