사용자 도구

사이트 도구


kb:rubyregularexpression

Ruby Regular Expression

루비는 정규식 기능 자체가 언어의 기본 기능이기 때문에 사용 방법이 약간 특이하다.

검색

문자열이 정규식을 포함하는지의 여부만 체크하려면 ”=~” 연산자를 이용한다.

print("abcdef" =~ /cdef/)
print("\n")
print("aaaaaa" =~ /cdef/)
print("\n")
2
nil

일치하는 부분을 좀 더 자세히 알고자 한다면, scan 함수를 이용한다.

str.scan( pattern ) -> anArray 
"12ab34cd".scan(/[a-z]+/) { |match| print("#{match}\n") }
ab
cd
a = "cruel world" 
a.scan(/\w+/)
a.scan(/.../)
a.scan(/(...)/)
a.scan(/(..)(..)/)
["cruel", "world"]
["cru", "el ", "wor"]
[["cru"], ["el "], ["wor"]]
[["cr", "ue"], ["l ", "wo"]]

치환

sub 함수 또는 gsub 함수를 이용한다.

sub 함수는 주어진 정규식과 일치하는 처음 패턴만 치환한 문자열을 반환한다. gsub 함수는 주어진 정규식과 일치하는 모든 부분을 치환한 문자열을 반환한다.

str.sub( pattern, replacement ) -> aString 
str.sub( pattern ) {| match | block } -> aString 
str.gsub( pattern, replacement ) -> aString 
str.gsub( pattern ) {| match | block } -> aString 
result = "abcdef abcdef".sub(/cdef/, "123")
print("#{result}\n")
result = "abcdef abcdef".gsub(/cdef/, "123")
print("#{result}\n")
ab123 abcdef
ab123 ab123

링크

kb/rubyregularexpression.txt · 마지막으로 수정됨: 2014/11/09 20:32 (바깥 편집)