【发布时间】:2017-11-02 03:09:35
【问题描述】:
我希望能够通过空格分隔将字符串分隔为值,但如果括号中的内容我需要它在单个值中。例如,(a b c) d e (f g) h 应该变成 ['a b c', 'd', 'e', 'f g', 'h']。什么是正则表达式可以为我做到这一点?
【问题讨论】:
-
'(a b c) d e (f g) h'.match(/\([^\)]+\)|\S+/g)似乎接近该输入。也许加入一些捕获组并循环使用.exec()?输入中的任何括号是否保证是平衡的?它们可以嵌套吗? -
@nnnnnn 不,我不能保证它们是平衡的,但它们应该是平衡的,所以如果它们不平衡,无论如何它应该会引发错误。
-
@nnnnnn 也不行,它们不能嵌套。
-
基于@nnnnnn 的回答尝试:
string.match(/\([^\)]+\)|\S+/g).map(x => x.replace(/[\(\)]/g,""))。 -
使用正则表达式处理嵌套可能很困难或不可能。使用循环逐个字符读取字符串会更容易,并计算嵌套的深度。
标签: javascript regex parsing