오늘은 여러분께 유용한 툴 하나를 소개해드리겠습니다. 파이어폭스 아시지요? 인터넷 익스플로러에 비한다면 한수 아니, 여러수 위의 웹브라우저입니다. 이 프로그램의 큰 장점 가운데 하나가 부가기능입니다. 브라우저를 만능 프로그램으로 만들어주는 막강한 기능이지요. 바로 이 부가기능 가운데 정규식 툴도 들어 있다는 거 아닙니까. 파이어폭스 안 쓰시는 분들은 반드시 써보시길... 제 개인적인 생각으로는 크롬 플러스보다도 조금 더 나은 것 같더군요. 뭐, 다소 취향의 문제겠지만요.

파이어폭스의 메뉴에서 ‘도구’를 선택하시면 ‘부가기능’이라는 서브메뉴가 있습니다. 이를 누르시면 ‘부가 기능 관리자’라는 창이 열립니다. 이 창의 우측 상단에 있는 검색 박스에 ‘regular expression tester’라고 입력한 뒤 엔터를 치시면 정규식 테스터 툴이 나옵니다. 이를 설치하시고 파이어폭스를 리스타트하면 도구 메뉴에 ‘regular expression tester’가 새로 생깁니다. 이 메뉴를 실행하면 새 창이 하나 열리는데 바로 이게 정규식 테스터입니다.

정규식만 전문으로 다루는 툴 가운데는 꽤 비싼 유료 프로그램도 많이 있습니다. 그런 대단한 프로그램과 비교할 수는 없지만 파이어폭스에 들어 있는 테스터도 나름 쓸만해 보입니다. 특히 옵션을 누르고 세팅을 선택하면 ‘Saved Expressions’라는 게 있는데 몇가지 유용한 패턴이 들어 있으니 참고하시기 바랍니다. 유효한 이메일인지 체크하는 정규식과 역시 유효한 IP인지 체크하는 정규식 등이 있는데 앞으로 이 강좌에서도 인용할 생각입니다.

지난 회에 이어 최대, 최소 매치에 대한 이야기를 계속하겠습니다.

1990/02/01   1997/03/04   1998/07/23

[0-9]{4}.+/[0-9]{2}

위의 정규식을 해석해 보면 숫자리 네 자리, 이어서 아무 문자나 한 글자 이상 죽 나오다가 숫자 두 자리, 이렇게 되죠? 그럼 위의 문자열에 대해 이 정규식을 써서 찾으면 어떤 결과가 나올까요? 울트라 에디트에서 실행해 보면 처음에는 맨 앞의 연월일을 찾고 다음 찾기에서는 두 번째, 그 다음 찾기에서는 세 번째를 찾을 것 같죠? 하지만 실제 해보면 처음부터 끝까지 하나의 문자열로 묶어서 찾습니다.

역시 앞서와 개념적으로 같은 케이스입니다. 탐욕적으로 찾기 때문입니다. 따라서 하나의 연월일을 각각 따로 찾기 위해서는 최소 매치를 적용할 필요가 있습니다. 이 경우 다음과 같이 됩니다. 위의 정규식과 다른 점은 오직 ? 하나가 추가된 것뿐입니다.

[0-9]{4}.+?/[0-9]{2}

여기서 플러스 표시, 즉 ‘아무 글자나 한 글자 이상’이라는 대목이 키포인트입니다. 한 글자 이상이라고 해서 마구 매치시키는 게 아니라 슬래시가 오기 전까지 최소한의 글자만 매치시키게 되거든요. 즉 위의 정규식을 해석해 보면 ‘숫자 4자리가 오고 아무 글자나 한 글자 이상이 오되 슬래시가 오면 잽싸게 멈춘 뒤 다시 숫자 2자리’가 됩니다. 여기서 중요한 대목은 ‘잽싸게’입니다. 그래야 최소로 매치가 되니까요.

지난번 글에서 실은 이 부분을 슬쩍 넘어갔었는데 눈치채신 분이 계셨는지 모르겠네요. 즉,

abc acc adc aec

^[a].+?[c]

요런 대목이었습니다. 여기서 물음표를 빼면 어떻게 될까요? 직접 한번 해보시길...

최소, 최대 매치에 대한 부분은 여기까지만 이해하시면 됩니다. 사실 좀 깊이 들어가면 무쟈게 어렵습니다. 아마도 정규식 처리 엔진의 동작 방식에 대한 이해가 선행되어야만 알 수 있을 것입니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
29 정규표현식 029. 자바스크립트의 정규식 5 마라톤맨 2012-03-28 8826
28 정규표현식 028. 자바스크립트의 정규식 4 마라톤맨 2012-03-09 4633
27 정규표현식 027. 자바스크립트의 정규식 3 마라톤맨 2012-03-02 4796
26 정규표현식 026. 자바스크립트의 정규식 2 마라톤맨 2012-02-27 5475
25 정규표현식 025. 자바스크립트의 정규식 1 마라톤맨 2012-02-22 6916
24 정규표현식 024. 숙제와 답 마라톤맨 2012-02-17 4956
23 정규표현식 023. 정규식의 옵션과 여러 정규식 엔진들 마라톤맨 2012-02-15 18232
22 정규표현식 022. 드라이브명과 디렉토리, 파일명 분리 2 마라톤맨 2012-02-13 10145
21 정규표현식 021. 드라이브명과 디렉토리, 파일명 분리 1 마라톤맨 2012-02-08 7733
20 정규표현식 020. IP 주소 유효성 검사 2 마라톤맨 2012-02-06 6504
19 정규표현식 019. IP 주소 유효성 검사 1 마라톤맨 2012-02-02 55931
18 정규표현식 018. 하위 표현식 3 마라톤맨 2012-01-30 4989
17 정규표현식 017. 하위 표현식 2 마라톤맨 2012-01-27 4107
16 정규표현식 016. 하위 표현식 1 마라톤맨 2012-01-25 5918
» 정규표현식 015. 최대 매치와 최소 매치 2 마라톤맨 2012-01-20 4519
14 정규표현식 014. 최대 매치와 최소 매치 1 마라톤맨 2012-01-18 7917
13 정규표현식 013. 검색할 위치 2 마라톤맨 2012-01-16 4642
12 정규표현식 012. 검색할 위치 1 마라톤맨 2012-01-13 5247
11 정규표현식 011. 검색 문자 개수 지정하기 머니북 2012-01-12 9396
10 정규표현식 010. 웹 서버 설정에도 필요 머니북 2012-01-11 7766