[[pagelist(^정규표현식/*)]] [[tableofcontents]] == 몇 번 일치하는가 - 상호 == == 구간 지정하기 - 승한 == * 구간은 중괄호로 표시한다. ({}) * 필요성 * +, *는 일치하는 문자수 제한이 없다. 최 몇개까지 일치하는지 정할 수 없다 * +, *, ?가 일치하는 수의 최솟값은 0이나 1이다. 문자수의 최솟값을 명시적으로 정의 불가능. * 정확히 원하는 만큼만 일치하도록 문자수 못 정함 * RGB 값은 {{{#99FFAA}}} 처럼 {{{[:xdigit:]}}}가 정확하게 6번 나와야 한다. === 정확한 반복 횟수 === * RGB * 기존 : {{{#[:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:]}}} * 개선 : {{{#[:xdigit:]{6}}}} === 반복 횟수 범위 설정 === * 날짜양식 : {{{\d{1,2}[-\/]\d{1,2}[-\/]\d{2,4}}}} * 하지만 날짜가 54/67/9999같은 날짜도 통과 시킨다. * 구간은 {0, 4} 처럼 0부터 시작할 수 있다. ||(O) ||4/8/03 || ||(O) ||10-6-2004 || ||(X) ||2/2/2 || ||(O) ||01-01-01 || === 최소 반복 횟수 찾기 === * 주문이 100불 이상인 것 찾기 : {{{\d+: \$\d{2,}\.\d{2}}}} {{| 1001: $496.80 1002: $1290.69 1003: $26.43 1004: $613.42 1005: $7.61 1006: $414.90 1007: $25.00 |}} * 결과 {{{ 1001: $496.80 1002: $1290.69 1004: $613.42 1006: $414.90 }}} == 과하게 일치하는 상황 방지하기 - 준석 == 물음표(?)는 제한된 범위만큼 일치시키고(없거나 하나만 있는 경우 일치한다), 구간을 쓰면 정확히 지정한 만큼 일치하거나 지정한 범위 안에서만 검색을 수행한다. * 예문 AK and HI * 검색문 {{{ <[Bb]>.*[/Bb]> }}} 이경우 검색되는 범위는 AK, HI, AK and HI 세개가 일치되고 이것은 과하게 일치했다고 할수 있을것이다. 그럼 이렇게 중복되는것을 어떻게 방지할수 있을까? 위에서 말한 물음표(?)를 쓰면된다. ||기본 수량자||게으른 수량자|| ||*||*?|| ||+||+?|| ||{n,}||{n,}?||| 게으른 수량자란?? 한번 걸쳐진 범위는 제외하고 검색해준다. 그러므로 이걸 사용하면 과하게 일치하는 상황을 방지할수 있다. * 예문 AK and HI * 정규 표현식 {{{ <[Bb]>.*[/Bb]> }}} 이렇게 검색해야 AK, HI만을 검색해준다. == 정리해보자 - 준석 == 이제 슬슬 정규표현식의 진짜 의미가 들어난다. 정규 표현 패턴을 사용하여 반복찾기를 하면 이제 까지 배워온 것을 이용해 구간으로 정확하게 원하는 문자를 찾아낼수 있을것이다. 이장에서는 || 문자 || 의미 || || + || 하나 이상 일치 || || * || 없거나 하나 이상 있는경우 일치 || || ? || 없거나 하나인 경우 일치(붙여서 쓴다) || || {n,n} || n개부터 n개 까지 범위지정 || 다음을 이용한다면 반복찾기 정규표현식은 중복도 방지할수있는 강력한 도구로 만들수 있을것이다