为了使用javascript将字符串值拆分为数组,我需要使用分隔符进行拆分。重复分隔符表示数组中的子值,例如
abc +!+; def +!+!+; 123 +!+; xyz
应分为abc,[def,123],xyz
我最近的表达式是((?:+!(?!+!))+ \; | $)但是想到它可能是我最初开始的那个,因为我经历了这么多的变化从那以后。
可能有一个非常明显的答案,但在看似永恒之后,我现在感到难过。我看了一下regex to parse string with escaped characters和类似的文章虽然不是同样的问题,但是基本上停了下来。
在某个地方,有人会比我更了解正则表达式,并希望他们有答案
答案 0 :(得分:1)
我通过.split()
使用\b\+!\+;\b
:
\b\+!\+!\+;\b
然后:
!\+
等等,等等。您需要将其转换为递归函数,但我创建了一个基本的basic pattern来帮助您入门。首先,我们使用第一个表达式拆分字符串。然后我们通过添加var string = 'abc+!+;def+!+!+;123+!+;xyz',
data = string.split(/\b\+!\+;\b/);
var regex = /\b\+!\+!\+;\b/
for(var i = 0; i < data.length; i++) {
var string = data[i];
if(string.match(regex)) {
data[i] = string.split(regex);
}
}
console.log(data);
// ["abc", ["def", "123"], "xyz"]
来创建我们的新表达式(这可以很容易地动态完成)。现在我们可以遍历我们的初始数组,查看字符串是否与我们的新表达式匹配,以及它是否再次拆分它。
{{1}}
我将离开的任务是使其成为OP的递归功能。如果你想要一些方向,我可以尝试提供一些更多的见解。