2011년 6월 2일 목요일

Resular Expressions

Resular Expressions

정규표현식은 간단히 말해 문자열에 매치(match)되는 패턴(pattern)을 기술하는 방법이다. 루비에서는 슬래시 사이에 패턴을 적으면 정규표현식을 의미한다. 루비이기 때문에 정규표현식 또한 객체이고, 사용법도 다른 객체와 별만 다르지 않다.

Perl이나 Python을 포함하는 문자열을 찾는 패턴은 아래와 같다.

/Perl|Python/

"|"는 오른쪽 값이거나 왼쪽의 값이라는 의미로 위의 경우에는 Perl이나 Python 중 하나가 된다. 또 아래와 같이 "()"로 묶을수도 있다.

/P(erl|ython)/

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

/ab+c/

위는 "a" 문자가 하나 오고 "b" 문자는 하나 이상 오고 마지막으로 "c"문자가 오는 패턴을 정의한것이다.

/ab*c/

위는 "a"문자가 하나오고 "b"는 없거나 여러개 마지막으로 "c" 문자가 오는 패턴이다.
또, "/s"는 공백문자, "/d"는 숫자, "/w"는 일반적인 단어에서 쓰이는 문자, "."는 아무 글자나 한글자를 의미한다.

/\d\d:\d\d:\d\d/     # a time such as 12:34:56
/Perl.*Python/       # Perl, zero or more other chars, then Python
/Perl\s+Python/      # Perl, one or more spaces, then Python
/Ruby (Perl|Python)/ # Ruby, a space, and either Perl or Python

패턴은 매치 연산자(=~)을 이용하여 문자열이 정규표현식과 매치되는지 검사한다.
if line =~ /Perl|Python/
 puts "Scripting language mentioned: #{line}"
end

루비의 치환(substitution) 메서드를 이용하여 정규표현식으로 찾아낸 문자열의 일부를 다른 문자열로 바꿀 수 있다.

line.sub(/Perl/, 'Ruby')    # replace first 'Perl' with 'Ruby'
line.gsub(/Python/, 'Ruby') # replace every 'Python' with 'Ruby'

댓글 없음:

댓글 쓰기

블록체인 개요 및 오픈소스 동향

블록체인(block chain) 블록체인은 공공 거래장부이며 가상 화폐로 거래할때 발생할때 발생할 수 있는 해킹을 막는 기술. 분산 데이터베이스의 한 형태로, 지속적으로 성장하는 데이터 기록 리스트로서 분산 노드의 운영자에 의한 임의 조작이 불가...