Number
Ruby에서는 모든 숫자도 Class로 구성이 된다. 따라서 숫자 뒤에 '.'을 입력하게 되면 method를 호출하는 것이 가능하다.
irb(main):017:0> num.times { print "this number is printed\n" }
Standard Regular expression
문자열 표현에 대한 식을 저장할 수 있으며 문자열을 치환역시 가능하다.
패턴에서 .,|,(,),[,],+,\,/,^,$,*,? 를 제외한 모든 문자은 자신에 매치가 된다. 이 문자를 지정하기 위해서는 \를 이용해서 문자를 적어주면 된다.
- ^ : 각 줄에서 가장 처음을 나타낸다.
- $ : 각 줄에서 가장 나중을 나타낸다.
- \A : 지정된 문자열의 첫부분을 나타낸다
- \Z : 지정된 문자열의 맨 마지막부분을 나타낸다.
- \B : 문자열이 아닌 것의 경계를 나타낸다.
- \b : 문자열의 경계를 나타낸다.
- \s : 공백을 나타낸다.
- \w : 문자열을 나타낸다.
- [] : 문자열의 집합을 나타낸다. 안에서 c1-c2와 같은 sequence를 사용하는 경우에는 c1에서부터 c2까지의 모든 문자를 나타낸다. ^를 사용하는 경우에는 역으로 지정이 된다.
반복
- r* : r이 없거나 1개 이상 나타나는 문자열에 매치
- r+ : r이 하나 이상 나타나는 문자열과 매치
- r? : r이 한번 또는 나타나지 않는 문자열과 매치
- r{m,n} : m이상 n이하 나타나는 문자열과 매치
- r{m, } : m이상 나타나는 문자열과 매치
그룹 : ()를 이용해서 그룹으로 묶어주는 것이 가능하다.
show_regexp("this is \nthe time", /^the/) -> this is\n<<the>> time show_regexp("this is \nthe time", /is$/) -> this <<is>>\n the time show_regexp("this is \nthe time", /\Athis/) -> <<this>> is \n the time show_regexp("this is \nthe time", /\Athe/) -> no match show_regexp("Price $12.", /[aeiou]/) -> Pr<<i>>ce $12 show_regexp("Price $12.", /[\s]/) -> Price<< >>$12 show_regexp("Price $12.",/:digit:/) -> Price $<<1>>2 show_regexp("see [Degine pattterns-page 123]", /[^a-z]/) -> see<< >> [Degine pattterns-page 123] : 패턴은 언제나 맨처음에 나오는 것에 인식이 된다. 여기에서는 소문자 a에서부터 z까지를 제외한 모든 문자를 검색하기 때문에 /s가 먼저 검색된 상태이다.
Ruby에서는 검색된 문자열을 $1, $2와 같은 특별한 변수에 저장하고 결과를 사용하는 것 역시 가능하다.