정규 표현식

정규표현식 패턴들

본 수업은 zvon의 정규표현식 tutorials를 이용한다. 실제 강의는 동영상을 참고하자.

zvon은 아래의 URL을 통해서 접근 할 수 있다.

http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents

아래는 인터렉티브하게 정규 표현식을 공부 할 수 있는 사이트

http://regexone.com/

댓글

댓글 본문
작성자
비밀번호
  1. NamJin Kim
    thank you
  2. 유용한 정보 감사합니다!
    정규 표현식 패턴들18~24) 경계 동영상에서 gskinner.com 홈페이지 화면이 작게 나와서 잘 안보이는게 좀 아쉽습니다
  3. 토프만
    우연히 검색으로 정말 유익한 공부가 되는것같습니다. 차근차근 이해하며 공부중인데 왠지 암호학 공부를 하는듯한 느낌이네요. 너무 재미있는 php의 세계인것같습니다.
  4. 살충제
    수업 자체도 상당히 도움이 되지만, 여러 유용한 사이트도 많이 알려주셔서 하나하나 잘 모아두고 있습니다. 감사합니다.
  5. 잘 보았습니다. 감사합니다.
  6. 허민호
    감사합니다 이제 기본편 정규들어야곘네요 ㅋㅋ
  7. 이주환
    2016. 05. 05
    잘보고 갑니다.
    정규표현식 재미있네요.
  8. basicb
    저도 그렇고 밑에분들 댓글도 그렇고 약간 혼란이 있어 원문 사이트 해석을 보니...egoing님 설명이 약간 헷갈리게 업로드 되어있긴 하군요 ㅎㅎ 그래도 매번 훌륭한 강의 잘 듣고 있습니다. 감사합니다.
  9. 참빛바다
    마지막 영상에 26페이지는 없네요.
  10. 정말 감사합니다! 정규표현식에 조금 친숙해졌습니다.
  11. SK Kim
    12페이지의 3번째 예제는 [-@]+ 이어야 하지 않나요?
  12. 고고1
    다 듣긴 했는데,, 흠
  13. 고고1
    아무것도 몰라서 php 하나만 배우면 되는줄 알았는데.. ㅎㅎ
    선행으로 html 배워야 한다고 해서 갔드니만 웹어플리케이션 배워야 한다구 해서 배우고
    html 배우고 php 배우는 중에 다시 정규표현식 배워야 한다구 해서 여기로 왔어여,,
    PHP를 배우기 위한 길이 험난하구만요!! ㅋㅋㅋㅋ
    그래도 친절하게 이정표를 알려주시고, 각 목적지에 처음하는 저도 이해하기 쉽게 강의해주시고
    (더군다나 무료!!!)
    감사하기만 합니다. 시간되시면 밥이나 술 등 사드리고 싶어요!!
    감사합니다!!
  14. 많은 도움 되었습니다. 감사합니다.
  15. pomz01
    +와 +? 에 대해 정리해드립니다.

    두 개의 같은 점은 모두 1번 이상의 반복을 의미합니다.

    차이점은 +만 쓸 경우(greedy Q.) 주어진 조건에서 만족하는 다수개의 가능성 중에 최대 반복을 선택하게 되고
    +?를 쓸 경우(lazy Q.) 주어진 조건에서 만족하는 다 수 개의 가능성 중 최소 반복을 선택하게 됩니다.
    (egoing의 언급 중 1회만 반복되는 것과 다른 부분이 됩니다. 1회가 아니라 결과를 만들 수 있는 최소 반복입니다)

    예를 들어
    ra rb rcccccccb
    이것을 예제로 들면
    r.+는 .(한 문자)을 1번이상 반복하죠. 그러나 반복하는 가능성은 여러 가지 존재합니다.
    첫번째 시작의 r부터 .이 한번만 쓰일 때는 ra, 2회 반복되면 ra (a다음 빈칸 포함), 3회 반복되면 ra r까지 되죠.
    이 가운데 가장 maxium으로 반복가능한 놈이 결과로 선택되는 것입니다.
    따라서 r로 시작해서 문장끝까지 모두 선택되는 것입니다.

    r.+?의 경우는 r로 시작하고 .(한글자)가 +에 의해 1회이상 반복되지만 결과로 만족되게 하기 위해서는
    2회이상도 반복가능하게 됩니다. 물론 이렇게만 쓰면 당연히 최소인 한번만 반복되도 만족되므로
    ra, rb, rc 가 각각 선택가능합니다. 이렇게만 보면 egoing의 말씀처럼 한글자만 반복되는 것으로 1회 반복이 됩니다.
    하지만 r.+?뒤에 b를 붙여서 r.+?b를 사용하시면 결과가 달라집니다.
    r과 b사이에 .이 1회이상 반복되는 가능성 중 최소 반복인데 r에서 시작해서 b로 끝나는 건
    (결과로) ra rb와 rcccccccb 가 됩니다.
    전자의 경우 r과 b사이에 .이 3번 반복되어 a r을 대표하여 ra rb를 만족하여 선택되고
    후자의 경우 r과 b사이에 .이 c의 개수만큼 최소 반복되어 rcccccccb 를 만족시켜 선택되는 것입니다.

    결론은
    *와 +의 경우 가능한 반복횟수 중 최대 반복으로 선택하지만
    뒤에 ?를 붙이면 결과를 만들 수 있는 가능성 들 중에서 최소만 반복하게 됩니다.

    *와 *?도 같은 측면에서 보시면 동일합니다. 다만 가능한 선택지에 0회 반복도 포함되는 것 뿐이며
    egoing님의 말씀처럼 항상 0회 반복이 되는 것은 아니고, 0회 반복 시 만족하게 되면 선택지에 포함되는 것입니다.
    예를 들어 같은 위에 든 예제에 동일하게 +대신 *를 사용하여도 만족하는 가능성에 대해
    최소 반복 수에는 +를 사용했을 때와 동일하므로
    r.*?b와 r.+?b는 같은 결과가 선택됩니다.
    r.*?b와 r.+?b 의 차이는 예상하시겠지만 예문에 'rb'라는 단어가 있다면
    r.*?b는 rb도 별도로 선택가능하게 되지만, r.+?b의 경우 .가 1회이상 반복되는 가능성 중에서만 선택하므로
    rb는 선택될 수 없습니다.
  16. pomz01
    eung //
    정규식 /(?=\.)*\w+.*(?=:)/ 를 사용하여

    "icon-star-outline"

    을 얻었습니다. 제가 어찌 하다 보니 되었는데 w+ 다음에 오는 .에 대한 이해가 어렵네요.
    여기에서 .의 의미가 몰까요?
    ----------------------------------------------
    \w+ -> 이 부분 앞부분은 .으로 시작하는 부분을 무시하라는 의미이고, 이 부분은 (0또는 다수개 이상의 . 다음에는) 반드시 word로만 시작해야된다는 의미이죠. 즉 icon 자리에 -가 icon보다 먼저 올 수 없음을 의미합니다.
    이후에 오는 .*가 없다면 word로만 단어를 구성할 수 있겠죠?
    (\w+뒤에 있으므로) 시작 글자만 아니라면 2번째 글짜 이후에는 word외에 어떠한 문자도 와도 OK라는 의미죠
    .* 로 인해 '-'도 포함될 수 있는 것입니다.
    대화보기
    • 포켓몬스터사냥꾼
    • 2015-11-17화
      훗 다봤다...
    • 샤핀
      저도 탐욕적 수량자랑 게으른 수량자 내용 중 이해가 안되서 구글링 해봤는데
      http://blog.eairship.kr/202 아래 블로그 내용에 따르면
      탐욕적 수량자는 최대한 큰 덩어리를 찾으려 들고
      게으른 수량자는 최소 덩어리로 찾으려고 한답니다.

      따라서 제가 이해하기로는 .+?의 게으른 수량자는
      <div>.+?</div> 일 땐

      무조건 "." 모든 문자를 한개 이상 갖고, 양쪽이 <div></div>를 갖는 최소의 덩어리를 찾는 문법인 거 같습니다.

      따라서 이고잉님이 말씀하신 .+?가 한개의 모든문자로 바뀌는 의미랑은 다소 차이가 있는 거 같습니다.

      17번 문법의 case4 경우는 r.+? 인데 r이 앞에 하나 있고 문자가 한개 이상인데 뒤에는 아무문자도 없는 최소 덩어리이기 때문에 r과 문자 한개 이상인 거 중에 최소 덩어리라서 ri 같은 것만 선택이 된거 같습니다.
      대화보기
      • 질샌더
        한방에 다 봤습니다.

        보기 전과 후가 완전 다르네요...ㅋㅋㅋ

        동영상 보기전엔 정규식이 외계어 같았는데 이제 좀 보입니다 ㅋㅋ
      • MR.H
        크윽
        대화보기
        • MR.S
          야레야레
          대화보기
          • MR.J
            굿도
          • 링거
            개발 경력이 어느정도 있어도 생활 코딩을 보는 것은 정말 도움이 많이 되네요.
            처음 배우는 사람에게도 좋치만 저같이 개발을 해본 사람이라면 좀 더 탄탄해지는 느낌을 받습니다.
            감사합니다.
          • eung
            강의 너무 재미있게 잘 들었습니다. 궁금한게 하나 있어 질문 올립니다.

            .icon-check-box-outline-blank:before {
            content: "\e8ef"
            }
            에서

            정규식 /(?=\.)*\w+.*(?=:)/ 를 사용하여

            "icon-star-outline"

            을 얻었습니다. 제가 어찌 하다 보니 되었는데 w+ 다음에 오는 .에 대한 이해가 어렵네요.
            여기에서 .의 의미가 몰까요?
          • 권택환
            ? 하나 더 붙여서 쓰는 이유는 위 강좌에도 나와 있지만 게으른과 탐욕적을 구분해서 쓰기 위함 아닐까요?

            탐욕적으로 매칭이 필요한 경우에는 +,*,? 하나만 쓰면 되지만 게으른 매칭이 필요 경우에는 ? 를 붙여주면 되는거지요

            + -> +?
            * -> *?
            ? -> ??
            {n} -> {n}?
            {min,max} -> {min,max}?
            {min,} -> {min,}?
            대화보기
            • 육점이
              저도 이부분이 궁금합니다. 뒤에 강의를 듣다보면 차이점이 나오게되는건가....요... <div>.+?</div> 가 된다면 +가 최소한의 1만을 갖는 것을 택하게 되는 선택자로 바뀌어서 <div>.</div>와 같은 의미가 되야 하는거 아닌가요??ㅠㅠ
              대화보기
              • sghy
                Page 19에서

                \W를 사용할 때와

                [^A-z0-9_]를 사용할 때

                블럭되는 부분 중 ^을 포함할 때가 있고 포함하지 않을 때가 있는데,

                동영상 강의에서 둘 다 같다고 하고 넘어가셔서 수정할 필요가 있습니다.
              • john
                패턴기본(1~2)
                앵커와이스케이핑(3~4)
                모든문자그룹(5~6)
                특정문자와범위(7~9)
                서브패턴(10) 봤습니다. 정규식이 유용한데 막상 쓰려고 하면 문법에 막혀서 애먹었는데 도움이 많이 되었습니다. 감사해요^^
              • 조신부리
                감사합니다
              • 아리솔
                재밋어요 7-9까지 봣어요
              • 홍이
                강의 잘봤습니다. 도움이 되었습니다.
              • 샤핀
                안드로이드 책 중에 지하철정보 개발편에서 정규표현식이란 걸 처음 알게 됬었는데.
                정규표현식이 뭔지 몰라서 막혔었는데 다시 꺼내서 살펴 봐야겠네요. 감사합니다.

                그리고 정규표현식과 java 란도 생겼으면 좋겠다는 바램이 있네요 ^^;
              • tenbird
                잘봤습니다
              • GM0946
                정규식 5~6 장 끝나는 곳을 보면 \..\. 의 의미를
                O.K. 에서 .K. 의 가운데의 K(any character)만 선택되는 것 처럼 설명된 거 같은데요.
                실제로 테스트 해보면 .K.모두 선택되는게 맞는거 같습니다.

                어떻게 보면 맞게 설명하신거 같기도 한데 처음 듣는 입장에선 좀 헷갈릴 수 있는 부분이라 댓글 남깁니다.
              • 지그프리드
                수량자2 에서
                r.+? 는 r뒤에 한글자인데. 이방식 설명대로면
                <div>.+?</div> 는 왜 <div> </div>사이에 한글자가 아니고 여러글자가 허용된 거죠.
                차이점이라면 뒤에 </div>가 왔다는 것이네요? +기능은 살아나고 첫 </div>에서 끊는 군요.
                +? 뒤에 아무것도 안왔을 때와 왔을 때의 의미가 다르다는 것이네요?
              • 호호
                ㅋㅋㅋㅋㅋ 수량자 예제 중에 one ring to bring them all이 익숙하다 싶었더니 반지의 제왕에서 절대 반지네요 ㅋㅋㅋㅋ
              버전 관리
              egoing
              현재 버전
              선택 버전
              graphittie 자세히 보기