[reg] Findrepeat
목차

05. 반복 찾기

문자 하나 이상 찾기

문자가 없거나 하나인 문자 찾기

구간 지정하기

과하게 일치하는 상황 방지하기

05. 반복 찾기

2022년 9월 9일

문자 하나 이상 찾기

  • 더하기(+)는 문자가 최소 하나 이상일 때 일치함
  • 별표(*)는 문자가 0개 이상일 때 일치함(있어도 없어도 됨)

📌 메타문자이다(더하기(+) 나 별표(*) 그대로 찾기 위해선 이스케이프(\)해야함)

예시설명
\w+최소 1개 이상 일치 하는 영숫자
[\w.]+영숫자와 (.)중 최소 1개 이상 일치
\w*최소 0개 이상 일치 하는 영숫자

문자가 없거나 하나인 문자 찾기

  • 물음표(?) 문자가 0 또는 1개일 때 일치함 📌 메타문자이다(물음표(?) 그대로 찾기 위해선 이스케이프(\)해야함)
예시설명
https?:http: 또는 https: / s가 있는지 없는지 여부를 따짐

구간 지정하기

정확히 원하는 만큼만 일치하도록 문자수를 정의하기 위해선
중괄호({})를 사용함
📌 메타문자이다(중괄호({}) 그대로 찾기 위해선 이스케이프(\\)해야함)    
예시설명
\d{3}6자리의 숫자를 찾아냄
\d{1,3}한자리에서 3자리 숫자를 찾아냄
\d{3,}최소 3자리의 숫자를 찾아냄

과하게 일치하는 상황 방지하기

물음표(?)는 구간을 쓰면 정확히 지정한 만큼 일치하거나 지정한 범위 안애서만 검색을 수행함

예시비교

- 예시
<[B]>Ak</[B]>and<[B]>HI</[B]>
대입식찾아내는 값
<[Bb]>.*</[Bb]><[B]>Ak</[B]>and<[B]>HI</[B]>
<[Bb]>.*?</[Bb]><[B]>Ak</[B]></mark>and<mark><[B]>HI</[B]>
  • 탐욕적(greedy) 별표(*)나 더하기(+) 같은 메타문자는 탐욕적이기 때문에, 가능한 가장 큰 한 덩어리를 찾으려고 함 -> 텍스트 마지막에서 시작해 거꾸로 찾음
  • 게으른(lazy) 문자가 최소한으로 일치함. 기존 수량자 뒤에 물음표(?)를 붙여서 표현
탐욕적 수량자게으른 수량자
**?
++?
{n,}{n,}?