Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

정규표현식/스터디/반복찾기: Difference between revisions

From ZeroWiki
imported>zeldababo
No edit summary
(Table transclusion repair v1)
 
(3 intermediate revisions by 2 users not shown)
Line 10: Line 10:
** RGB 값은  
** RGB 값은  
  #99FFAA
  #99FFAA
처럼 [[:xdigit:]]가 정확하게 6번 나와야 한다.
처럼 [:xdigit:]가 정확하게 6번 나와야 한다.
=== 정확한 반복 횟수 ===
=== 정확한 반복 횟수 ===
* RGB
* RGB
** 기존 :  
** 기존 :  
  #[:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:]
  #[:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:][:xdigit:]
** 개선 :  
** 개선 :  
  #[:xdigit:]{6
  #[:xdigit:]{6
}
}
=== 반복 횟수 범위 설정 ===
=== 반복 횟수 범위 설정 ===
* 날짜양식 :  
* 날짜양식 :  
  \d{1,2}[-\/]\d{1,2}[-\/]\d{2,4
  \d{1,2}[-\/]\d{1,2}[-\/]\d{2,4
}
}
** 하지만 날짜가 54/67/9999같은 날짜도 통과 시킨다.
** 하지만 날짜가 54/67/9999같은 날짜도 통과 시킨다.
Line 42: Line 42:
  \d+: \$\d{2,}\.\d{2
  \d+: \$\d{2,}\.\d{2
}
}
{{|
1001: $496.80
1001: $496.80
1002: $1290.69
1002: $1290.69
Line 50: Line 49:
1006: $414.90
1006: $414.90
1007: $25.00
1007: $25.00
|}}
* 결과
* 결과
  1001: $496.80
  1001: $496.80
Line 66: Line 64:
* 검색문
* 검색문


  <[Bb]>.*[/Bb]>
  <[Bb]>.*[/Bb]>


  이경우 검색되는 범위는 <B> AK</B>, <B>HI</B>, <B> AK</B> and <B>HI</B> 세개가 일치되고 이것은 과하게 일치했다고 할수 있을것이다. 그럼 이렇게 중복되는것을 어떻게 방지할수 있을까? 위에서 말한 물음표(?)를 쓰면된다.
  이경우 검색되는 범위는 <B> AK</B>, <B>HI</B>, <B> AK</B> and <B>HI</B> 세개가 일치되고 이것은 과하게 일치했다고 할수 있을것이다. 그럼 이렇게 중복되는것을 어떻게 방지할수 있을까? 위에서 말한 물음표(?)를 쓰면된다.
Line 93: Line 91:
* 정규 표현식
* 정규 표현식
   
   
  &lt;[Bb]&gt;.*[/Bb]&gt;
  &lt;&#91;Bb&#93;&gt;.*&#91;/Bb&#93;&gt;




Line 123: Line 121:


다음을 이용한다면 반복찾기 정규표현식은 중복도 방지할수있는 강력한 도구로 만들수 있을것이다
다음을 이용한다면 반복찾기 정규표현식은 중복도 방지할수있는 강력한 도구로 만들수 있을것이다

Latest revision as of 12:46, 27 March 2026

[[pagelist(^정규표현식/*)]]

몇 번 일치하는가 - 상호

구간 지정하기 - 승한

  • 구간은 중괄호로 표시한다. ({})
  • 필요성
    • +, *는 일치하는 문자수 제한이 없다. 최 몇개까지 일치하는지 정할 수 없다
    • +, *, ?가 일치하는 수의 최솟값은 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개 까지 범위지정

다음을 이용한다면 반복찾기 정규표현식은 중복도 방지할수있는 강력한 도구로 만들수 있을것이다