2013-08-12 50 views
4

我有一個像這樣的字符串foo bar(5) baz(0, 3),並且需要根據它們之間的空格將它拆分爲其部分。所以結果需要如下所示:['foo', 'bar(5)', 'baz(0, 3)']按空格拆分字符串,但不在括號內

我想是這樣的:

var str = 'foo bar(5) baz(0, 3)'; 
str.split(' '); // => ['foo', 'bar(5)', 'baz(0,', '3)'] 

正如你所看到的結果不是我所期望...任何想法如何正確拆呢?我認爲這是這裏的RegExp -gurus轉一轉......

更新

一個簡單的方法可能是更換所有,,

str.replace(/, /g, ',').split(' '); 

但是,這並不期待真的很漂亮...

回答

4

您可以使用.match這個。

str.match(/\w+(\(.*?\))?/g) 
=> ["foo", "bar(5)", "baz(0, 3)"] 
+0

是啊,看起來不錯:)感謝迄今...我當然不是一個正則表達式,但是我們可以縮短這一點嗎? – yckart

+0

@yckart我不明白你爲什麼要縮短它?我寧願嘗試改進它,也許像這樣'[^()\ s] +(\(。*?\))?' – HamZa

+0

真棒:)保存我的一天! – Pratik

相關問題