잊지 않겠습니다.

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와 같은 특별한 변수에 저장하고 결과를 사용하는 것 역시 가능하다.

 

문자열의 치환

  • string#sub method : 문자열 부분을 한번만 변경 시킨다.
  • string#gsub method : 문자열 부분을 모두다 변경시킨다. 
ex:모든 단어의 첫글자를 대문자로 변경시켜주는 Method
패턴은 \b\w
def mixed_case(name)
    name.gsub(/\b\w/) { |first| first.upcase }
end

 

Posted by Y2K
,