모든 텍스트 도구 안에 사는 패턴 언어
Regex 는 grep, sed, awk, vim, 에디터 검색창, 현대 모든 프로그래밍 언어에 있어. 방언은 달라도 핵심 문법은 같아.
빌딩 블록
- 아무 글자:
. - character class:
[abc]= a, b, c 중.[^abc]= 그 외.[a-z]= 범위. - 사전 정의:
\d숫자 (PCRE),\w단어,\s공백. - 앵커:
^줄 시작,$끝.\b단어 경계 (PCRE).
수량자
*— 0 개 이상.+— 1 개 이상 (ERE / PCRE).?— 0 또는 1 (ERE / PCRE).{3}— 정확히 3.{2,5}— 2 ~ 5.
그룹과 alternation
(foo|bar)— foo 또는 bar.(\d+)— 숫자 캡처,\1로 참조.
BRE vs ERE vs PCRE
- BRE (basic, grep/sed 기본) —
+,?,{},()가 백슬래시 필요. - ERE (extended,
grep -E,sed -E) — 현대적이고 sane. - PCRE (Perl 호환,
grep -P) — full power: lookahead, lookbehind, named group.
실전 패턴
- email 풍:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,} - IP 풍:
\b(\d{1,3}\.){3}\d{1,3}\b - ISO 날짜:
\d{4}-\d{2}-\d{2} - 줄 끝 공백:
[[:space:]]+$
email 완벽 검증은 악몽. 이 패턴은 강한 필터일 뿐. 인간 언어에 완벽한 regex 쓰려 하지 말기.