我會去先找到每一部分,然後分裂在每個值更高的效率。然後我會用一個空格將它們粘在一起。我用了很多\s*
'es,因爲我假設可能有多個空格(例如註釋行中的那些空格)。正則表達式的
var str = 'value1 value2 (value3 value4) -value5 value6';
//var str = ' value1 value2 ( value3 value4) -value5 value6 ';
var pairs = str.match(/^\s*(.+?)\s*\(\s*(.+?)\s*\)\s*(.+?)\s*$/);
values1 = pairs[1].split(/\s+/);
values2 = pairs[2].split(/\s+/);
values3 = pairs[3].split(/\s+/);
console.log('values1:',values1,'-->',values1.join(' '));
console.log('values2:',values2,'-->',values2.join(' '));
console.log('values3:',values3,'-->',values3.join(' '));
說明
^
串的開頭
\s*
可能的空的空間
(.+?)
一個字符組(至少1個字符)
\s*
可能的空的空間 個
\(
開口括號
\s*
可能的空的空間
(.+?)
一個字符組(至少1個字符)
\s*
可能的空的空間
\)
閉括號
\s*
可能的空的空間
(.+?)
一個字符組(至少1個字符)
\s*
可能爲空字符串的空間
的
$
結束時,你可以給一個較長的輸入和預期輸出的例子嗎? – Dogbert 2012-03-18 13:47:51