2011-08-01 106 views
0

我想以这种形式Javascript字符串解析

[something](something something) [something](something something)

解析字符串,我想在每一个不是一组括号之间的空间突破?

我试过使用js string.split将其作为正则表达式/[^\(].*\s+.*[^\)]/g,但它不起作用?任何建议表示赞赏:-)

编辑:我不想发布此作为答案,因为我想留下它的意见,但我终于找到了解决方案。

var a = "the>[the](the the) the>[the](the the) the" 
var regex = /\s+(?!\w+[\)])/ 
var b = a.split(regex) 
alert(b.join("+++")) 
+2

能括号内嵌套? – SLaks

+2

(mis)?引自jwz:“很多人在遇到问题时都会想自己,'我知道!我会用正则表达式!'现在他们有两个问题。“ – riwalk

+0

不需要嵌套它们,它们只是在那里以防止通常会包含空格的字符串,当被解压缩时保持空格 – rubixibuc

回答

2

您的输入是否始终如此一致?如果是这样,可能就像分割你的字符串一样简单') ['

如果不是,是否有可能只采取介于[)之间的内容?还是有某种正在发生的嵌套?

+0

它并不总是这样,这只是一个受控的例子 – rubixibuc

+0

我需要能够打破某些空间,除非它们在括号之间 – rubixibuc

+0

@rubixibuc can you还回答SLaks的问题? – gnur

1

您正在使用错误的工具进行工作。

正如在this famous post中所暗示的那样,正则表达式不能解析非正则语言,而“平衡括号”问题不能用常规语言来描述。

您是否尝试过编写解析器?

编辑:

看来,你终于澄清了嵌套不是必需的。在那种情况下,我会建议gnur的解决方案。

+0

当然,但在这种情况下,很有可能如果规则非常有名,请使用正则表达式。 – gnur

+0

另外一个象引号的符号怎么样,除了引号之间的东西或者是同一个东西之外,什么都可以拆分? – rubixibuc

+0

@gnur,这是问题的关键。我不知道是否允许嵌套括号。如果嵌套圆括号不被允许,那就去做吧。如果嵌套括号*被允许,那么一个邪恶的孩子会哭泣处女的血液,而俄罗斯黑客将会对他的网络应用程序进行处理。 – riwalk

0

此正则表达式会做你问什么,仅此而已:

'[x](x x) [x](x x)'.split(/ +(?![^\(]*\))/);