이 블로그 검색

레이블이 regular expression인 게시물을 표시합니다. 모든 게시물 표시
레이블이 regular expression인 게시물을 표시합니다. 모든 게시물 표시

2012년 9월 20일 목요일

regex basic

[] => [] 안에 존재하는 문자들중 한 문자만을 나타낸다.
    예) [abc] 는 a , b, c 중에 한문자. '-' 는 범위. 즉 [a-f] 는 [abcdf]

 \w => [a-zA-Z0-9_]
 \d => [0-9]
 .  => 모든 문자에 대응되는 한 문자
 +  => 한 문자 이상(하나는 반드시 존재, repeats the preceding regular expression at least once)
 *  => 문자나 집합이 없는 경우 또는 하나 이상 연속하는 경우에 일치한다. 없어도 ok
 ?  => 문자가 없거나 하나와 대응하는 문자   예) https?// - s가 없거나 한번 있는 경우와 대응
    ca?r matches both `car' and `cr', but nothing else.
 \ => 문자그대로 . 를 나타냄 (이스케이프)

 ab{3}" => b가 3개까지 (abbb)
 ab{3,5}" =>  b가 3개에서 5개 까지 (abbb, abbbb, abbbbb )
 ab{2,}" => b의 개수가 2개 이상 (abb, abbbbb ...)
 {3,} => 최소 3번 일치함을 의미한다.

 () => ()안에 있는 글자들을 그룹화, 하위 표현식.
    a(bc)* : a라는 문자를 포함하고 bc라는 문자열이 없거나 계속반복( a, abc abcbc 등)
    a(bc)  : a라는 문자를 포함하고 bc라는 문자열이 있거나 없거나. (a,abc)

    (\d{1,3}\.){3}\d{1,3} => ip addr

 공백 문자 => \n, \r, \t, \f-form feed, \v-vertical tab
 \s => 공백 ,[\f\n\r\t\v],
 \S => 공백아님 , [^\f\n\r\t\v]

 |  => or 연산자, 묶음 안에서 하나를 일치시키고자 할 때
    IP주소를 구성하는 각 숫자 묶음을 유효한 조합으로 정의하는 규칙
    - 모든 한 자리 혹은 두 자리 숫자
    - 1로 시작하는 모든 세자리 숫자
    - 2로 시작하면서 두 번째 자리 숫자가 0부터 4사이의 모든 세 자리 숫자
    - 25로 시작하면서 세 번째 자리 숫자가 0부터 5사이의 모든 세 자리 숫자

    (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

    주민번호 : \d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])-[1-4]\d{6}


탐욕적 수량자,  게으른 수량자
    *                            *?
    +                            +?
    {n,}                       {n,}?

    예) "<B>111</B> and <B>222</B>" 에서

    <[Bb]>.*</[Bb]>  => 111 and 222
    <[Bb]>.*?</[Bb]> => 111, 222

egrep 에서 111이후 대문자3자리로 끝나는  프로세스 검색
==> -w 옵션 사용

> ps -ef | egrep -w  '111[A-Z]{3}'