Javascript,Regex-我需要获取括号中包含的字符串的每个部分
以下是我所需要的,我想一定是正确的顺序:Javascript,Regex-我需要获取括号中包含的字符串的每个部分,javascript,regex,Javascript,Regex,以下是我所需要的,我想一定是正确的顺序: 需要提取并存储方括号中包含的字符串的每个部分的内容(每个部分必须紧跟在原始字符串的其余部分之后),并且返回原始字符串时不带这些内容 如果在给定的提取节的开头有一个可识别的字符串,后跟一个冒号,那么我需要识别并删除该字符串 对于剩下的内容(逗号分隔),我需要将其转储到数组中 不要试图分析嵌套的括号 做这件事的好方法是什么 编辑:下面是一个字符串示例: 您好,我是一个字符串[this:is,how][it:works,但是,可能有][括号、部分、不带冒号][
>> 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 "
提取后:“嗨,我是字符串”
标识为“this”的数组:[“is”,“how']
标识为“it”的数组:[works',but',there']
无标签标识的数组:['may by bracket','parts','without','colon']
未使用标签标识的数组:[]
给出了结果:
>> 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',)在早期阶段删除[[[]]
令牌代码>-此代码将它们捕获为一个普通组。您能给出一个示例字符串和相应的结果吗?一个简短的说明-您可能正在尝试解析嵌套的括号。如果您有[token:val1,[ignore]val2]
,该怎么办?即使在你的例子中,嵌套的标记也会引起一些麻烦。编辑:嗯,我想如果有任何嵌套的标记,那么可能不应该解析整个集合。这是一个选项吗?您可以很容易地从它们中进行检查,搜索\\[^\\]]*\\[
。这是否只在[[和]]的情况下进行检查?或者这也适用于您的示例?是的,您需要使用正则表达式,如。split(/\s*,\s*/)
。字符串的工作方式不同,并且split
中不需要/g
(但也不是:)
)啊,/\s*,\s*/。我还不完全清楚/g到底做了什么。/g
是全局性的。当你在没有/g
的情况下匹配时,它只会找到第一个匹配,这在大多数情况下是不可取的。拆分不管有没有它,都能像预期的那样工作。虽然这样工作,但它给你留下了一个看似“笨拙”的问题结果。就我个人而言,我更喜欢使用类似于str.split(/\s+(?=\[+)/);
)的方法将字符串分成几个部分,然后迭代结果。@Andy-我同意,这样可以写得更清楚。对于更多的边缘情况,这将是唯一的选择。