피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
“어디서나” 동작하는 정규 표현식
환경 간 호환성 보장을 위한 Regular Expression 최소 공통 부분집합 설계
AI 요약
Context
구현체마다 상이한 Regular Expression 문법으로 인한 환경 간 호환성 결여 문제 발생. 특히 Perl 기반의 풍부한 기능이 sed, awk, Emacs 등 제한적 환경에서 동작하지 않는 파편화 현상 심화.
Technical Solution
- 도구 간 호환성 확보를 위해 가장 엄격한 기준인 리터럴 및 기본 특수 문자 중심의 최소 공통 부분집합 정의
- GNU sed 및 grep-E 옵션 적용을 통한 공통 기능 범위 확장 및 awk 기준의 최하위 호환성 확보
- Emacs의 특수한 이스케이프 규칙(+? () {} |) 및 문자 클래스(\s, \S) 차이를 반영한 문법 보정
- 역참조(Back-reference) 지원 여부가 상이한 gawk 및 RE2 엔진의 제약 사항을 고려한 패턴 설계
- 셸 스크립트 및 Python raw string 간의 중첩된 이스케이프 규칙을 고려한 데이터 흐름 설계
실천 포인트
- 설치 권한 없는 환경 고려 시 POSIX 기본 정규식 수준의 기능만 사용 - 다수 도구 교차 사용 시 \\s, \\d와 같은 단축어 대신 문자 클래스 [ ] 사용 권장 - 역참조가 필수적인 경우 대상 엔진이 RE2 또는 gawk인지 사전 확인 - RFC 9485(I-Regexp) 등 상호 운용 가능한 표준 포맷 검토