눈바래다

정규표현 : 문자열에 존재하는 규칙을 식으로 표현한 것으로 문자열의 표현식

 

◆메타문자

. 임의의 하나의 문자 Per. = Per 시작하는 모든문자

* 0회이상 반복 ab* = a ab abbb ...

+ 1회이상 반복 ab+ = ab abb abbb ...

? 0 또는 1회반복 ab? = a ab

^ 단어의 맨처음

$ 단어의

| 선택 ab|ba = ab 또는 ba

{n} 문자 n 허용 s{2} = ab

{n,} 문자 n 이상 허용 s{2,} = ab abc abcd abcde ....

{n,m} 문자 n 이상 m 이하 허용 s{2,3} = ab abc

\n 문자로 취급 \? \+ \* \$

 

/k{3}ing/

keeping kolding

 

/pa{2,5}ing/

patterning padding patting

 

◆문자클래스 : 여러문자를 모아서 하나의 클래스로 지정하는

[0123] 0 1 2 3 하나를 가리킨다

[0,1,2,3] 위와 동일

 

문자클래스에 ^ 포함하면 해당 문자 클래스가 아닌 모든 .

[^0123] 0123 이외의 모든문자

[0123456789] [0-9] 동일하다

 

◆특수문자

\w [0-9a-zA-Z] 대소영문자, 모든숫자

\W [^0-9a-zA-Z] 대소영문자, 숫자이외

\s [\t\n\r\f] 공백문자

\S [^\t\n\r\f] 공백문자 이외

\d [0-9] 숫자

\D [^0-9] 숫자 이외

 

정규표현은 패턴을 찾기 위한 검색식이다

일치하는 패턴찾기

$str =~ /$pattern/

검색대상 =~ /정규표현/

 

일치하지 않는 패턴찾기

$str !~ /$pettern/

검색대상 !~ /정규표현/

 

특수변수 : 패턴매칭에 성공한 경우 문자열은 특수변수에 리턴된다

$& 일치하는 문자열 전체

$` 일치하는 문자열 앞에 있는 문자열

$' 일치하는 문자열 보다 뒤에 있는 문자열

$1 $2 ... 첫번째 두번째 ... 그룹에 속하는 문자열

$+ 마지막 그룹에 속하는 문자열

 

검색옵션

g 일치하는 것을 모두 찾는다

i 대소 문자를 구별하지 않는다

m 문자열을 복수행으로 취급 (개행문자 취급)

s 문자열을 단일행으로 취급 (개행문자 취급안함)

x 반각 스페이스를 취급하지 않는다 (무슨말인지 모르겠음)

 

◆문자열 변경 치환

변경문자열 =~ tr/변경대상문자열/변경내용/

$str =~ tr/a-z/A-Z/

 

치환문자열 =~ s/치환대상문자열/치환내용/

$str =~ s/dog/cat/