2012-03-18 30 views
1

JavaScriptで正規表現のヘルプが必要です(申し訳ありませんが、私はまだそれを学んでいます)。JavaScript RegExp 3つの部分

私は、文字列があります(3つの部分のそれぞれに無限の値を持つことができます)value1 value2 (value3 value4) -value5 value6

そして、私は分離する必要があります。

var1 = value1 + ' ' + value2 ... 
var2 = value3 + ' ' + value4 ... 
var3 = value5 + ' ' + value6 ... 

あなたはこれで私を助けることができます?ありがとう!

+0

  • $エンドあなたが長く、入力と期待される出力の例を与えることができますか? – Dogbert

  • 答えて

    2

    分割は、文字列のフォーマットは、与えられたフォーマットのように留まる場合、考えかもしれ:

    'value1 value2 (value3 value4) -value5 value6'.split(/\s+\(|\)\s+\-/); 
    //=> ["value1 value2", "value3 value4", "value5 value6"] 
    
    +0

    素晴らしい!しかし、最初の値は文字列の最後にスペースがあります。これのための任意のアイデア? jQuery.trim()? –

    +0

    こんにちはCaio、私は助けることができてうれしい。私は答えを編集しました、分割は今もスペースを削除します。 – KooiInc

    1

    元の文字列はすでにこれらのスペース区切り文字が含まれているので、試してみてください。

    /^(.*) \((.*)\) -(.*)$/.exec(str); 
    

    をそれは文字列"anything (anything) -anything"にマッチします。

    arr[1],arr[2]およびarr[3]の3つの結果を含む配列を返します。

    (または-のように特殊文字を使用することはできませんが、それ以外の場合は実際には定義できません。

    1
    var str1 = "value1 value2 (value3 value4) -value5 value6"; 
    
    //var parts = str1.match(/^([^(]+)\(\s?([^)]+)\)\s?(.+)$/); 
    var parts = str1.match(/^([^(]+)\(\s?([^)]+)\)\s?-(.+)$/); 
    
    var var1 = parts[1]; 
    var var2 = parts[2]; 
    var var3 = parts[3]; 
    
    console.log(var1); 
    console.log(var2); 
    console.log(var3); 
    
    +0

    おそらくダッシュを含める必要があると思います。 – pimvdb

    +0

    はそれが陰性だと思った..lol – epascarello

    1

    私はその後、より効率のために、それぞれの値を分割し、最初の各部分を見つけるに行きますか。それから私は単一のスペースを使用してそれらを一緒に固執するでしょう。私は\s*のものをたくさん使っていました。なぜなら、複数のスペース(コメント行のものなど)があると仮定しているからです。

    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(' ')); 
    

    正規表現の説明

    • ^
    • (.+?)文字群(少なくとも1文字)
    • \s*可能空きスペース
    • \s*可能な空きスペースの開始 の
    • \(開口括弧
    • \s*可能空きスペース
    • (.+?)文字群(少なくとも1文字)
    • \s*可能空きスペース
    • \)閉括弧
    • \s*可能空きスペース
    • (.+?)
    • 文字グループ(1文字以上)
    • \s*可能空のスペースの文字列
    関連する問題