2009-08-20 11 views
1

タブを使用してインデントされたテキストのブロックをどのように一致させることができますか?正規表現を使用してテキストブロック内でタブを一致させる

は、私は次のテキストを持っていると言う:

 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

    # This is a text block 
    @some = 'ruby' 
    @then = 'some more' 

Aliquam malesuada scelerisque orci, sed venenatis sem eleifend ac. Vestibulum vehicula sagittis commodo. Praesent dapibus lacinia aliquam. 

私は(すなわちコード)でタブ付きれるすべてのコンテンツを一致させたいです。

答えて

3

これは、ブロックごとに1つの文字列と配列を返します:私は後にしたまさに

str = %Q{ 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. 

\t# This is a text block 
\[email protected] = 'ruby' 
\[email protected] = 'some more' 

Aliquam malesuada scelerisque orci, sed venenatis sem eleifend ac. Vestibulum vehicula sagittis commodo. Praesent dapibus lacinia aliquam. 
\t# another block 
\tfoo(bar) 
} 

str.scan(/(?:^\t.*\n)+/) #=> ["\t# This is a text block\n\[email protected] = 'ruby'\n\[email protected] = 'some more'\n", "\t# another block\n\tfoo(bar)\n"] 
+0

。ありがとうございます:D –

+2

この正規表現は、 '%Q {\ tfoo}'のようなタブを含む行の一部と誤ってマッチします。 'str.scan(/()()\t.+\n)+/)' – FMc

+0

良いキャッチです。一定。 – sepp2k

0

複数行のマッチを使用していない限り、これで離れることができます:/^\t+.+/

関連する問題