문자 밀도가 문제야
정규식이 무서워 보이는 건 정보 밀도 때문이야. ^(?:[a-zA-Z0-9_'^&/+-])+(?:\.(?:[a-zA-Z0-9_'^&/+-])+)*@(?:(?:\[?(?:[0-9]{1,3}\.){3}[0-9]{1,3}\]?)|(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})$ 같은 패턴은 다른 프로그래밍 문법보다 한 줄에 훨씬 많은 의미를 욱여넣어. 눈이 읽기를 거부할 만하지.
이건 인지 능력의 한계지 개인 결함이 아냐. 두 가지 기법으로 풀 수 있어.
1. 상세 모드
대부분 엔진에는 패턴을 여러 줄로 펼치고 주석을 다는 플래그가 있어. Python은 re.VERBOSE 또는 re.X, PCRE는 x 플래그를 써.
이 모드를 켜면 같은 패턴이 평범한 코드처럼 읽혀. 패턴 안의 공백은 무시돼. 리터럴 공백이 필요하면 \ 또는 [ ]를 쓰고, #부터는 주석으로 읽어.
2. 조각으로 만들고 이름 붙이기
상세 모드가 없어도 이름 붙은 구성 조각으로 패턴을 조립할 수 있어. 실서비스 정규식은 이렇게 만들어야 오래 버텨.
관점 전환
정규식은 한 번 쓰고 버리는 문장이 아냐. 나중에 반복해서 읽히지. 80자 안에 욱여넣은 패턴보다 공백, 주석, 이름 붙은 그룹을 갖춘 패턴이 미래의 작업자를 살려줘. 다음 사람이 2주 뒤의 자신이어도 똑같아.