루비는 정규식 기능 자체가 언어의 기본 기능이기 때문에 사용 방법이 약간 특이하다.
문자열이 정규식을 포함하는지의 여부만 체크하려면 ”=~” 연산자를 이용한다.
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