본문 바로가기

RegEXR/Common

탐욕적인 수량자(Greedy Quntifiers), 게으른 수량자(Lazy Quntifiers)

정규표현식의 패턴들 11~14) 수량자2(Quntifiers)

  • 수량자 갯수제한 {}
  • 탐욕적인 수량자와 게으른 수량자 차이

pattern : {글자수}

  • 앞에 있는 패턴에 일치하는 글자수를 지정(공백포함)pattern : {글자수1, 글자수2}
  • 앞에 있는 패턴에 일치하는 글자수가 첫번째 글자수 이상 두번째 글자수 이하pattern : {글자수1, }
  • 에 있는 패턴에 일치하는 글자수가 첫번째 글자수 이상만 되면 됨
  • 문자{0,} === 문자*
  • 문자{1,} === 문자+source : One ring to bring them all and in the darkness bind them

.{5}

  • 어떤 글자던 5글자까지 => all matched의 경우 5글씩 끊기 때문에 %5 나머지 갯수는 매치안됨
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

[els]{1,3}

  • e,l,s 중에 1글자 이상 3글자 이하
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

[a-z]{3,}

  • a부터 z까지 글자가 3개이상 : 공백으로 구분하기 때문에 단어 갯수가 2개일 경우 매치안됨
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

source : AA ABA ABBA ABBBA

AB*A

AB{0,}A

  • A뒤에 B가 0개~여러개 뒤에 A
  • first match : AA ABA ABBA ABBBA
  • all matched : AA ABA ABBA ABBBA

AB+A

AB{1,}A

  • A뒤에 B가 1개이상 뒤에 A
  • first match : AA ABA ABBA ABBBA
  • all matched : AA ABA ABBA ABBBA

AB?A

AB{0,1}A

  • A뒤에 B가 0개 혹은 1개 뒤에 A
  • first match : AA ABA ABBA ABBBA
  • all matched : AA ABA ABBA ABBBA

pattern : 수량자?

  • * ? + 같은 수량자와 ?가 결합한 경우 의미가 달라진다
  • 수량자뒤에 ?가 오면 앞의 수량자의 최소갯수만 의미함
  • ex) 문자*?이라면 *의 최소갯수가 0이니깐 문자 0개를 의미함
  • 탐욕적인 수량자(Greedy Quntifiers)가 아닌 게으른 수량자(Lazy Quntifiers) 사용하고 싶을때 쓴다

source : One ring to bring them all and in the darkness bind them

r.*

  • r과 그 뒤에 오는 모든 문자
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

r.*?

  • r만 골라라 => *의 최소수량이 0개 이므로 .은 무시됨
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

r.+

  • r과 그 뒤에 문자 한개이상이 옴
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

r.+?

  • r과 그 뒤에 문자 한개가 옴 => +의 최소수량이 1개이므로
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

r.??

  • r만 골라라 => ?의 최소수량이 0개 이므로 .은 무시됨
  • first match : One ring to bring them all and in the darkness bind them
  • all matched : One ring to bring them all and in the darkness bind them

수량자?는 언제쓰는가?

flag g : 이렇게 식 짜면 통채로 다 선택됨

flag g : ?가 추가되면 각 식이 끊어져서 선택됨

flag m : m 이여도 중간 끊어지는 부분을 구분하지 않기에 통채로 다 선택됨

flag m : 각 식이 끊어져서 첫번째만 선택이 됨

'RegEXR > Common' 카테고리의 다른 글

정규표현식 ?=  (0) 2019.12.16
정규표현식 \w \W \d \D \b \B \A \Z  (0) 2019.12.13
정규표현식 * + ?  (0) 2019.12.11
정규표현식 [] [-] [^] (|)  (0) 2019.12.10
정규표현식 $ ^ / .  (0) 2019.12.10