pattern이 최대한 많은 수의 매칭을 하려고 하는 성질
POSIX RE에서는 non-greedy matching 수량자 제공하지 않음
PCRE에서는 non-greedy matching 가능한 quantifier 제공 : lazy quantifier
vim 은 POSIX BRE를 사용하지만 non-greedy 수량자인 \{-}
제공
/<.\+>
/<.\{-}>
grep -P "<.+?>"
PCRE에서만 지원되므로 -P
옵션 사용
BRE 사용 유틸 grep
vim
sed
ERE 사용 유틸 egrep
awk
sed+option
grep *
grep +
grep \+
egrep +
네이버 페이지에서 url 링크 추출
매칭된 결과를 다시 사용하는 패턴
()
로 묶인 패턴 매칭 부분을 \N
의 형태로 재사용
(.+)
부분을 \1
에서 재사용; 같아야 함
cat 또는 dog
child 또는 boy가 0개 이상 존재
BRE(default)
ERE -re
사용
[ ]*
앞 뒤 공백도 제거
ERE 표현식
\b
boundary가 맞는 표현식 검색
\B
boundary에 맞지 않는 표현식 검색
클래스 | 설명 | PCRE Set |
---|---|---|
[[:cntrl:]] | 제어문자 | [\x00-\x1f\x7f] |
[[:space:]] | white space | [ \t\r\n\v\f] |
[[:print:]] | 출력 가능한 문자 | [ -~] |
[[:graph:]] | 공백 제외 출력 가능한 문자 | [!-~] |
[[:punct:]] | 특수문자 | [!-/:-@\[-'{-~] |
피하려면?
.*
혹은 .+
와 같이 greedy한 표현식 최소화