【发布时间】:2021-08-11 06:12:23
【问题描述】:
在 JS 中,我有一组字符串需要分解成一个数组。每个字符串最多可以分解为 5 个组(有些组更少)。我正在使用正则表达式来打破一切。
在下面的字符串集中,如果它包含aabb或cc,则需要进入捕获组2。
不幸的是,我对正则表达式不是很熟悉,因此卡在了这一点上。
这种模式是否只能使用正则表达式,还是我必须将 :: 打破到 | 并在以后分解?
我的正则表达式模式^[ \t]*(?:(?:(\w+)\|)?(?:(\w+):(?:(\w+):)?)?)?(\w+)::(\w+)$ DEMO
字符串集(每行在 JS 中循环运行):
group4::group5
aa:group4::group5
bb:group4::group5
cc:group4::group5
group1|group4::group5
group1|aa:group4::group5
group3:group4::group5
aa:group3:group4::group5
group1|group3:group4::group5
group1|aa:group3:group4::group5
最终结果应该可以产生这个……
var groups = {1:"group1", 2:"group2", 3:"group3", 4:"group4", 5:"group5"};
如果有人可以帮助我,正则表达式模式就足够了
【问题讨论】:
-
|与:的工作方式有什么特别之处吗? -
总是 group5, group4 存在。
|用于分隔特殊内容的字符,但是,如果该模式不可能,则可以用:替换(如果有帮助的话)。 -
我相信最有效和可能的方法是捕获整个组并检查 3 个值并命名它们。所以这也是一个选择。我不太擅长正则表达式。这就是我坚持这一点的原因。
-
或许不使用正则表达式会更好?
-
在
group2:group4::group5中,为什么group2不应该被捕获在#3 组中?为什么和group3:group4::group5不同?
标签: javascript regex regex-group