var results = [];
s = s.replace(/\[+(?:(\w+):)?(.*?)\]+/g,
function(g0, g1, g2){
results.push([g1, g2.split(',')]);
return "";
});
Дает результаты:
>> results =
[["this", [" is", " how"]],
["it", [" works", " but", " there"]],
["", ["might be bracket", " parts", " without", " colons "]],
["", ["nested sections should be ignored?"]]
]
>> s = "hi, i'm a string "
Обратите внимание, что между токенами остаются пробелы. Также вы можете удалить [[]]
токенов на более ранней стадии, вызвав s = s.replace(/\[\[.*?\]\]/g, '');
- этот код захватывает их как обычную группу.