我知道有很多关于捕捉群体的问题,我已经阅读了大约十几个但我似乎无法解决我遇到的问题。我有一个这种形式的字符串:
{{First String/Second String|{Thing1}|{Thing2}|{Thing3}|{Thing4}|}}
在第一部分是固定的但是对于{Thingx}部分,可以有从0到n的任何地方。我想最终得到一个阵列
完全匹配
第一个字符串
第二个字符串
Thing1
Thing2
Thing3
Thing4
我正在使用regex101.com进行测试。我有一个initial regex
/{{(.+?)\/(.+?)\|({.+?}\|)}}/
可以将所有{Thingx}
件作为单个组捕获。然后我可以使用second regex
/{(.*?)}\|/
打破他们。如果有一个正则表达式可以执行这两个步骤吗?
答案 0 :(得分:1)
如何依赖多个匹配而不是组。您可以使用布尔OR
|
在一行中的正则表达式中实现它。正则表达式将是
{{([^\/]*)|\/(.*?)\||{(.*?)}
一个完整的例子可能是这样的
var str = '{{First String/Second String|{Thing1}|{Thing2}|{Thing3}|{Thing4}|}}';
var myRegexp = /{{([^\/]*)|\/(.*?)\||{(.*?)}/g;
var match = myRegexp.exec(str);
while (match != null) {
if (typeof match[1] != 'undefined') console.log(match[1])
if (typeof match[2] != 'undefined') console.log(match[2])
if (typeof match[3] != 'undefined') console.log(match[3])
console.log("---------------------------");
match = myRegexp.exec(str);
}