2011-08-01 102 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(/ +(?![^\(]*\))/);