【发布时间】:2018-07-10 01:40:21
【问题描述】:
我想根据空格将字符串分隔成一个数组,但需要注意的是一对大括号或方括号中的空格应该被忽略。
我能够找到一些接近我想要的答案 here 和 here,但它们不处理嵌套在其他括号中的括号。
如何拆分这个字符串:
foo bar["s 1"]{a:{b:["s 2", "s 3"]}, x:" [s 4] "} woo{c:y} [e:{" s [6]"}] [simple square bracket] {simple curly bracket}
进入这个数组?
["foo", "bar[\"s 1\"]{a:{b:[\"s 2\", \"s 3\"]}, x:\" [s 4] \"}", "woo{c:y}", "[e:{\" s [6]\"}]", "[simple square bracket]", "{simple curly bracket}"]
当使用来自first link 的正则表达式时,我修改了正则表达式以使用方括号和大括号,并为示例的简单、未嵌套部分获得了正确的输出,但对于复杂的嵌套区域却没有. See here.
second link's 答案依赖于带有冒号的 JSON 格式,它不适用,因为我的输入不一定是有效的 JSON,而且它也没有类似的字符模式来适应答案。
根据评论者的说法,这可能不适用于正则表达式。即使是这样,任何拆分字符串以达到预期结果的方式都将被视为正确答案。
【问题讨论】:
-
您好。在学习如何使用正则表达式时,最好的办法是开始写作。通过搜索其他人的表达并试图将它们硬塞到您的应用程序中,您可能不会学到很多东西。尝试提取一些有用的东西,从你的尝试中学习,然后尝试改进它。当您在特定问题上遇到困难时提出问题,并展示您的工作。这里的人们非常愿意提供帮助,但如果您不付出一些努力,您不太可能获得太多帮助。毕竟,你把你放进去的东西拿出来。
-
我在这个问题上花了 30-40 分钟,我对正则表达式并不完全陌生。我考虑添加示例,说明为什么我包含的两个链接不起作用,但为了简洁起见,决定不这样做。我应该添加这些例子来证明我在这个问题上付出了努力吗?
-
@getfugu 是的,请添加您之前的尝试,以帮助我们了解您已经尝试过的内容以及遇到问题的地方。
-
@getfugu,对不起,我并不是说你没有付出任何努力,当然也不是为了证明你已经尝试过。我的意思是建议特定问题优于一般问题,例如,“我预计
x会导致y,但观察到z”,而不是“我如何到达y?”。 -
嗯,很简单,你不能。不是用正则表达式。正则表达式匹配正则语言,而你的不是。您需要对其进行标记和解析。
标签: javascript regex split