javascript - 正则表达式匹配和分组直到一个字符序列
问题描述
我有一个字符串,它有多个关键字,其值由冒号字符(也可能是空格)分隔。关键字和值对本身仅由空格分隔(或根本没有)。
一些例子是:
"TAG1: asd asd testTAG2:TEST"
"TAG1:asd asd test TAG2:TEST"
"TAG1: asd asd test TAG2:TEST TAG1:hello"
然后我使用这个正则表达式来匹配(TAG1|TAG2): ?(.+)
只有当我有一个标签对时才有效。(TAG1|TAG2): ?(.+)(?=TAG1|TAG2)
因此,我尝试使用正向前瞻(
所以我想知道的是如何将其拆分为匹配项,然后有一个组用于标记名,另一个组用于值:
"TAG1: asd asd testTAG2:TEST"
[["TAG1", "asd asd test"], ["TAG2", "TEST"]]
"TAG1:asd asd test TAG2:TEST"
[["TAG1", "asd asd test"], ["TAG2", "TEST"]]
"TAG1: asd asd test TAG2:TEST TAG1:hello"
[["TAG1", "asd asd test"], ["TAG2", "TEST"], ["TAG1", "hello"]]
有什么替代方案不包括在比赛中?我认为这就是问题所在,因为它会跳过下一个标签。
解决方案
我会使用拆分方法:
var test = [
"TAG1: asd asd testTAG2:TEST",
"TAG1:asd asd test TAG2:TEST",
"TAG1: asd asd test TAG2:TEST TAG1:hello"
];
console.log(test.map(function (a) {
return a.split(/(TAG1|TAG2):/);
}));
推荐阅读
- sql - Django get objects that are foreign key of two models
- python - 我自己的模块不会导入到 python 3.8
- git - 当我的所有代码都在主分支中时,如何创建拉取请求?
- javascript - Peer cli 有效,但 ExpressPeerServer 无效
- service - 作为 Windows 服务运行时,Grpc 服务器未侦听端口 5001
- netsuite - 是否可以使用工作流自动将 Dropship 采购订单转换为项目履行?
- pycharm - Python:将 TIF 转换为 JPEG
- java - Connections.Response purchaseResult 后的 Alexa 错误“不支持以下指令:DelegateDirective”
- c++ - 如何在 C++ 中编写代码以将二次多项式拟合到数据集?
- c++ - 用于捕获线程 CPU 时间的 API