본문 바로가기

.주제별

[요약] Ruby + 정규식 표현 몇가지 예제들

0. 루비에서 정규식 사용 방법
    >> /Perl/
    ==> /Perl/


1. 예제 1 : 텍스트 일부를 치환 (.sbu)
    >> "Perl is cool. I like Per!".sub(/Perl/, "Ruby")
    ==> "Ruby is cool. I like Perl!"

2. 예제 2 : 텍스트에서 매칭되는 모두를 치환 ( .gsub)
    >> "Perl is cool. I like Per!".gsub(/Perl/, "Ruby")
   ==> "Ruby is cool. I like Ruby!"

3. 예제 3 : 동시 매칭 ( /P(erl|HP/ : Perl or PHP)
    >> "Perl is cool. I like PHP!".gsub(/P(erl|HP)/, "Ruby")
   ==> "Ruby is cool. I like Ruby!"

4. 예제 4 : [...] 패턴
    >> "The password is 9428.".gsub(/[0-9]/, "*")
   ==> "The password is ****"

5. 예제 5 : [^...] 역패턴
    >> "I love Seoul!".gsub(/[^a-zA-Z]/, "*")
   ==> "I*love*Soul*"

6. 에제 7 : 모든 문자를 매칭하는 패턴
    .ool 은 cool, fool, pool, tool 등에 매칭
    >> "Ruby is cool. I like Per!".sub(/.ool/, "fun")
   ==> "Ruby is fun. I like Perl"

7. 예제 6 : 반복되는 특정 패턴 '+', '*'
    >> "Ruby is cooooool."sub(/o+/, "oo")
   ==> "Ruby is cool. I like Perl!"

8. 예제 8 : 하나 이상의 반복되는 패턴
    >> "1001001001888".sub(/(001)+/, "")
   ==> "1888"

10. 예제 10 : 특정 패턴이 있는지 조사
    >> "A year has 365 days." =~ /[0-9]+/
   ==> 11 (11번째 char)

11. 예제 11 : =~ 조건문에서
    >> if "A year has 365 days." =~ /[0-9]+/
    >>     puts "There is a number in the string!"
    >> end
   ==> There is a number in the string!
   ==> nil

12. 예제 12 : 패턴이 매칭된 부분을 읽어 들이기
    >> if "A year has 365 days." =~ /([0-9]+)/
   >>     puts $1
   >> end
    365
   ==> nil

13. 예제 13 : 패턴과 매칭되는 여러 문자열 차례로 읽어 들이기
    >> if "210.163.138.100" =~ /([0-9]+) \.([0-9]+) \.([0-9]+) \.([0-9]+)/
    >>     puts $1
    >>     puts $2
    >>     puts $3
    >>     puts $4
    >> end
    210
    163
    138
    110
   ==> nil