관리 메뉴

nkdk의 세상

루비의 정규 표현식 본문

My Programing/RUBY Rails

루비의 정규 표현식

nkdk 2008. 3. 9. 22:34
정규표현식은 문자열, 정수, 실수, 배열등을 지원하는 것이다.
하지만 정규표현식은 루비, 펄,awk같은 스크립트 언어만 지원한다.
이것이 난해하기는 하지만 문자열을 다루는 데는 매우 강력한 도구이다.
외부라이브러리 지원과 내장형 직접 지원에는 큰 차이가 있다.
이곳에서는 실제 동작하는 정규표현식 예제를 몇 가지 살펴보도록 한다.

Perl혹은 python을 포함하는 문자열을 찾는 패턴은 다음과 같다.

/Perl|Python/

같은 걸로 다음과 같이 표현이 가능하다.

/P(erl|ython)/

패턴에서는 문자 반복을 표현할 수도 있다.

또 다른 패턴으로는 /ab+c/ 는 a가 하나 오고, 그 뒤에 1개 이상의 b가 오고
이어서 c가오는 문자열이다. 이 패턴에서 더하기를 별표로 바꾼 /ab*c/
는 a가 하나 오고, b가 없거내 여러개이다.

문자 그룹 매치를 보자.
/s 공백문자(space, tab, newline 등)
/d 숫자
/w 일반적인 단어에서 쓰이는 문자를 나타낸다
'.' 는 아무 글자나 한 글자를 의미한다.

/\d\d:\d\d:\d\d\ # 12:34:56형태의 시간이다.

/Perl\s+Python/ #Perl, 1개 이상의 공백문자, 그리고 Python
/Ruby (Perl|Python)/ # Ruby, 공백, 그리고 Perl 이나 Python 중 하나


해당된 문자열이 Perl 이나 Python을 포함하고 있으면 메시지를 출력

if line =~ /Perl|Python/
puts "스크립트 언어에 대한 언급: #{line}"
end

루비의 치환 메서드를 이용하는 방법
line.sub(/Perl/, 'Ruby') #처음 나오는 'Perl'을 Ruby로 치환
line.gsub(/Python/, 'Ruby') #모든 'Python'을 'Ruby'로 치환

문자열에서 Perl과 Python을 모두 Ruby로 바꾸려면 아래와 같이 쓰면 된다.

line.gsub( /Perl|Python/, 'Ruby' )

앞으로 하다가 보면 계속적으로 정규 표현식에 대해 더 많이 다루게 된다.

다음은 블록과 반복자..