다음의 예제로 정규식을 이해해 봅시다.

#set $a = "hello"#
#set $b = ["hello", "world"]#
#print $a#
#stop#


조건 :
1. 모든 문장은 #로 시작해서 #로 끝난다
2. #로 시작하여 공백이 나오거나 #로 끝나기 전까지는 영어 소문자만 가능하다
3. 이후 나오는 문자는 영어 소문자, $, =(1~2개), [, ", ,(콤마),  (공백) 만 사용가능하다
4. 큰따옴표 ""사이의 문자는 아무런 제약을 받지 않는다. 모든 문자 및 특수문자 사용가능
5. ["hello", "world"]같은식으로 두개이상의 아무런 제약을 받지 않는 큰따옴표 문자가 존재한다 (4번 규약 무한 반복 가능)
6. 두개이상의 공백이 있을수 있다


나의 경우에는 먼저 여러종류의 사용가능한 코드를 생각해 내고 거기에 맞추어 조건을 생각해 냈다.

이제 내가 원하는 문자만 검색할수 있도록 해보자.

1. 모든 문장은 #로 시작해서 #로 끝난다는 조건이 있다. 일단 그 사이에는 어떤 문자가 있어도 상관없다.
시작과 끝을 #로 한다고 하니 #로 설정한다. 그 중간에는 우선 어떤 문자가 와도 상관없으니 아무문자와 매치 되는 .을 쓰고 0개~무한 반복을 뜻하는 *을 쓰자. 혹시 한개이상의 문자가 필요하다면 +를 사용하면 된다.
결과 : #.*#

2. #로 시작하여 공백이 나오거나 #로 끝날때까지는 영어 소문자만 가능하다고 한다. 영어 소문자 리스트에 Arrange설정을 하자. 공백이 있어도 되고 없어도 되는 경우이므로 0~무한 매치인 *를 사용한다. 있는 경우에는 2개 이상이 될수도 있음을 분명히 하자. 공백문자(스페이스, 탭등)을 뜻하는 [\s]를 사용하자. [[:space:]]와 같은 문법도 클래스 형태로 제공하므로 사용해도 된다.
결과 : #[a-z]+[\s]*#

3. 이후 나오는 문자는 변수명과 = [ , " (공백) 등만 사용 가능하다. =는 1개나 2개만 사용가능하다는것도 잘 이해해 두자. '?'의 경우 반복없이 한번만 있을수도 있고 없을수도 있다는 뜻이다.
큰따옴표 안에는 아무런 제약을 받지 않는다고 한다. .*을 이용해 주면 모든 문자에 매치될수 있을것이다.
결과 : #[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\".*\"[\s]*[\]]?[\s]*#

4. "hello", "world"같이 여러개가 설정 가능하다고 한다. 어떻게 해야 할까? 그룹()으로 설정하면 된다.
한개는 무조건 있어야 하는것이고 두번째부터는 없을수도 있고 여러개일수도 있다. (blahblah)*식으로 그 그룹에 정의된 단위대로 0개이상의 반복을 할수 있다.
결과 : #[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\".*\"([\s]*,\".*\")*[\s]*[\]]?[\s]*#

최종 결과 : 

#[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\".*\"([\s]*,\".*\")*[\s]*[\]]?[\s]*#

어떤가요?

이 글의 관련글
    이글의 태그와 관련된 글이 없습니다.

트랙백을 보내세요

트랙백 주소 :: http://theeye.pe.kr/trackback/141
  1. 정규식 쉽게 만들기 - RegexBuddy

    Tracked from bakion 2007/12/10 03:02

    정규식을 쉽고 빠르게 만들고 테스트할 수 있는 RegexBuddy를 소개합니다. 정규식에 대해 기초적인 지식이 있다면 이 프로그램으로 빠르고 정확하게 정규식을 만들 수 있습니다. 현재 정규식을 잘 모르는 분은 정규식 가이드를 간단히 읽어보고, RegexBuddy에 포함된 도움말을 통해서 접근하면 효율적으로 배울 수 있습니다. 영어로 되어 있는게 단점이지만 다른 어떤 곳의 정규식 설명보다 눈에 쏙 들어오게 정리가 잘 되어 있습니다. 저는 PDA 클리핑..

  2. 정규 표현식 완전 해부와 실습 -서환수 역

    Tracked from 김재호의 디지털보단 아날로그 2009/02/20 08:26

    정규 표현식 완전 해부와 실습 - 제프리 프리들 지음, 서환수 옮김/한빛미디어 최근 한 달여 동안 침대에서 이 책과 함께 잠이들곤 했다. 이 책은 정규표현식을 다루는 최고의 명서이다. 인터넷을 둘러보다 보면 정규 표현식을 설명하는 많은 문서들에서 언제나 빠짐없이 등장하는 단 한권의 책이다. -거의 모든 문서들에서 많은 정규식 책들 중 오직 이 책만을 추천하고 있을 정도로 이 책의 위상은 독보적이다. 이 책은 3판(2006)까지 나와있는데, 우리말로..

댓글을 달아 주세요

  1. rabbii 2008/07/26 11:49

    올뺀을 닮으셨네요..^^

  2. ElegantCoder 2009/05/28 06:52

    앱스토어 입성을 축하드립니다. 정규식 찾다 검색에 걸리시길래 댓글 남기고 갑니다:)

비밀글 (Serect)
댓글 달기 (Submit)