2009-08-20 4 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

이 블록 당 하나의 문자열 배열을 반환합니다

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)+t.+\n)+/)' – FMc

+0

좋은 캐치. 줄 시작 부분에 탭을 고정해야합니다. 결정된. – sepp2k

0

멀티 라인 매치를 사용하지 않는 한, /^\t+.+/으로 도망 갈 수 있습니다.

관련 문제