2017-03-08 4 views
1

こんにちはRubyでは、どのように複数の空白やタブ文字に分割しますか?私はこれを試しました複数の空白やタブを分割するにはどうすればよいですか?

2.4.0 :003 > a = "b\tc\td" 
=> "b\tc\td" 
2.4.0 :005 > a.strip.split(/([[:space:]][[:space:]]+|\t)/) 
=> ["b", "\t", "c", "\t", "d"] 

しかし、タブ自体がトークンになっている、それは私が欲しいものではありません。上記は、あなたが使用するグループが 1をキャプチャあるので、それが起こる

["b", "c", "d"] 
+0

split関数に '\ s +'パターンを使用すると、あなたが望むものが返されます。使い方: '.split(/ \ s + /)' – MohaMad

答えて

2

返す必要があります。 split referenceを参照してください:

パターンはグループが含まれている場合は、それぞれの試合は、同様の配列で返されます。

結果の配列にマッチした文字列を追加することを避けるために(のみのパターンをグループ化するために使用される)non-capturing groupを使用してください:あなたはあなたの中に両方のスペースとタブを含む文字クラスを使用することができます。この例では

a.strip.split(/(?:[[:space:]][[:space:]]+|\t)/) 
       ^^ 
0

正規表現:

"b\tc\td".split /[ \t]+/ 

あなたが空白に分割したい場合は、すべての空白文字にマッチする[\s]+表記を、使用することができます。

関連する問題