타이핑 줄여주는 세 글자
가장 흔한 character class 는 shorthand 형태가 있어. 보이는 그대로의 의미:
\d— 숫자. ASCII:[0-9]. Unicode 모드: 모든 Unicode 숫자.\w— "word" 글자. ASCII:[A-Za-z0-9_]. Unicode 모드: 문자 + 숫자 + 연결자.\s— 공백 글자.[ \t\n\r\f\v], Unicode 모드면 Unicode 공백 추가.
이건 universal — 모든 정규식 flavor 가 지원.
Unicode-aware vs ASCII-only
여기서 flavor 가 미묘하게 갈려:
- Python 3:
\d,\w,\s기본 Unicode-aware.\d는 아랍-인도 숫자, Devanagari 숫자 등 매칭. ASCII 강제하려면re.ASCII플래그. - JavaScript: 기본 ASCII-only.
u플래그로 Unicode 활성화하지만\w가 Unicode 문자 포함되진 않음. 그건u플래그 +\p{L}사용. - RE2 / Go / ripgrep: 기본 ASCII. Unicode 카테고리는
\p{Nd},\pL등. - PCRE: 기본 ASCII;
(*UCP)또는/u모드로 Unicode-aware.
\w 함정
\w 는 underscore 포함하지만 하이픈 안 함. 그래서 \w+ 는 my_var 매칭하지만 my-var 안 함. 사람들이 끊임없이 까먹어. "하이픈 있는 식별자" 원하면 [\w-]+ 명시.