본문 바로가기
[도서 정리] 9. 전방탐색과 후방탐색 - 손에 잡히는 10분 정규 표현식 9. 전방탐색과 후방탐색 - 손에 잡히는 10분 정규 표현식 -지금까지 사용한 표현식들은 모두 일치하는 텍스트를 가지고 있었지만, 가끔은 텍스트 자체를 찾기보다는 어디서 텍스트를 찾을지를 표시하는데 표현식을 쓰고 싶을 때도 있다.그러려면 전후방탐색(lookaround)을 써야 한다. * 전후방탐색 살펴보기 -전방탐색은 모든 주요 정규식 구현에서 지원하지만, 후방탐색은 광범위하게 지원하지 않는다.자바, 닷넷, PHP, 파이썬, 펄에서는 몇 가지 제약이 있지만 후방탐색을 지원한다.자바스크립트에서는 지원하지 않는다. * 전방탐색 - 앞으로 찾기 -전방탐색(lookahead) 패턴은 일치 영역을 발견해도 그 값을 반환하지 않는 패턴을 말한다.전방탐색은 실제로는 하위 표현식이며, 하위 표현식과 같은 형식으로 작성.. 2019. 12. 31.
[도서 정리] 8. 역참조 사용하기 - 손에 잡히는 10분 정규 표현식 8. 역참조 사용하기 - 손에 잡히는 10분 정규 표현식 * 역참조(backreferences) 이해하기 -gamza 와 같은 녀석이 있을 때 올바르지 않은 포맷인데도.*? 에 매핑된다. * 역참조로 찾기 -This is. block of of text,several words here are arerepeated, and and theyshould not be. 아래 패턴으로 중복 노출되는 단어들을 찾을 수 있다.[ ]+(\w+)[ ]+\1 [ ]+ 는 공백이 하나 이상 연속되는 겨우 일치한다.그 다음 \w+ 가 괄호로 감싸져 있음에 주목하자.반복해 일치시키려고 하위 표현식을 사용한 것이 아니다.반복해서 일치하는 부분도 없다.여기서는 나중에 일치한 부분을 사용할 수 있도록 표시하여 구별하고자 하위 표현.. 2019. 12. 30.
[도서 정리] 7. 하위 표현식 사용하기 - 손에 잡히는 10분 정규 표현식 7. 하위 표현식 사용하기 - 손에 잡히는 10분 정규 표현식 * 하위 표현식 이해하기 - 가 있을 때 regexp {2,} 는 일치하지 않는다.; 에 대해서만 2회 이상이기 떄문이다. * 하위 표현식으로 묶기 -하위 표현식은 큰 표현식 안에 속한 일부 표현식을 한 항목으로 다루도록 한데 묶은 것이다.하위 표현식은 괄호 사이에 사용한다. -ip 주소를 검색하는 경우 아래와 같이 두가지 경우 모두 사용할 수 있다. \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\d{1,3}\.){3}\d{1,3} -일부 사용자들은 가독성을 높이고자 표현식 일부를 하위 표현식으로 묶기도 하는데,(\d{1,3}\.){3}\d{1,3} 대신 (\d{1,3}\.){3}(\d{1,3}) 를 사용하면..규칙에 완벽히.. 2019. 12. 29.
[도서 정리] 6. 위치 찾기 - 손에 잡히는 10분 정규 표현식 6. 위치 찾기 - 손에 잡히는 10분 정규 표현식 * 경계 지정하기 -위치 찾기(position matching)는 텍스트 문자열 안에서 반드시 일치해야 하는 위치를 지정할 때 사용한다. The cat scattered his food all over the room.여기서 고양이 "cat" 을 정규식으로 사용하면, 원래 찾으려 했던 고양이 cat 과 scattered 의 cat 이 함께 검색된다. 이럴 때 경계(boundaries)를 사용하거나 패턴 앞이나 뒤에 특정한 위치 혹은 경계를 나타내는 메타 문자를 사용하면 원하는 cat 만 추출할 수 있다. * 단어 경계 지정하기 -\b 로 표시하는 단어 경계가 있다.단어 경계라는 이름에서 유추해 볼 수 있듯이, \b 는 단어의 시작이나 마지막을 일치시킬 .. 2019. 12. 28.
[도서 정리] 5. 반복 찾기 - 손에 잡히는 10분 정규 표현식 5. 반복 찾기 - 손에 잡히는 10분 정규 표현식 * 몇 번 일치하는가? ** 하나 이상의 문자 찾기 -문자나 집합에 속한 요소를 하나 이상 찾으려면 간단히 문자 뒤에 더하기(+) 문자를 붙이면 된다.문자가 하나 이상일 때 일치한다. -집합 문자에 + 를 사용할 때는, 더하기를 집합 바깥에 두어야 한다. -더하기(+)는 메타 문자다.문자 그대로 더하기를 찾으려면 \+ 로 이스케이프 해야 한다. -일반적으로 마침표(.)나 더하기(+) 같은 메타 문자들이 집합의 구성원일 때는 문자 그대로 취급되므로 굳이 이스케이프 할 필요가 없다.그러나 이스케이프 한다고 문제가 생기지는 않는다.[\w.] 는 [\w\.] 과 같다. ** 문자가 없거나 하나 이상 연속하는 문자 찾기 -별표(*)를 사용하면 된다. ** 문자가.. 2019. 12. 27.
[도서 정리] 4. 메타 문자 사용하기 - 손에 잡히는 10분 정규 표현식 4. 메타 문자 사용하기 - 손에 잡히는 10분 정규 표현식 * 이스케이프 다시 살펴보기 -메타 문자는 정규식 안에서 특별한 의미가 있다.마침표(.)는 메타 문자로, 어떤 문자든 문자 하나와 일치한다.이와 유사하게, 여는 대괄호 ( [ ) 도 집합의 시작을 나타내는 메타 문자다. -메타 문자들은 정규식에서 특별한 의미가 있으므로 자기 자신을 문자 그대로 표현할 수 없다.여는 대괄호 ( [ ) 가 여는 대괄호와 일치하지 않고, 마침표(.)가 마침표와 일치하지 않는다.메타 문자는 그 앞에 역슬래시를 붙여 문자 그대로 해석되게(이스케이프) 할 수 있다.메타 문자는 모두 이스케이프 할 수 있는데, 그러면 메타 문자로서 지니는 특별한 의미 대신 문자 자체를 뜻하게 된다. * 공백 문자 찾기 -[\b] : 백스페이.. 2019. 12. 26.
[도서 정리] 3. 문자 집합으로 찾기 - 손에 잡히는 10분 정규 표현식 3. 문자 집합으로 찾기 - 손에 잡히는 10분 정규 표현식 * 여러 문자 중 하나와 일치시키기 -모든 문자가 아니라 특별한 문자와 일치하는 것을 찾고 싶을 때 정규식에서는 메타 문자인 대괄호( [] ) 를 사용해 문자 집합을 표현한다.대괄호는 문자 집합을 정의한다.대괄호 안에 있는 문자는 모두 집합의 구성원이 되며, 집합에 속한 문자 가운데 하나가 일치한다.집합에 속한 문자가 모두 일치할 필요는 없다. -정규식이 제대로 동작하는지 알아보는 일은 까다로울 수 있다.얻고자 하는 결과의 패턴이 일치하는지 확인하는 일은 매우 쉽지만, 진짜 도전 과제는 얻고 싶지 않은 결과도 일치하는지 확인하는 일이다. -문자집합은 흔히 대소문자를 구별하지 않고 검색하거나 검색할 부분의 특정 영역만 대소문자를 구별하지 않을 때.. 2019. 12. 25.
[도서 정리] 2. 문자 하나 찾기 - 손에 잡히는 10분 정규 표현식 2. 문자 하나 찾기 - 손에 잡히는 10분 정규 표현식 * 문자 그대로 찾기 -Ben 은 정규식이다.평범한 텍스트여서 정규식처럼 보이지 않을지 몰라도 확실히 정규 표현식이다.처리 과정을 보면 평범한 텍스트만으로 이루어진 정규식은 완전히 낭비이긴 하다. ** 얼마나 많이 일치하는가? -대다수 정규식 엔진은 기본으로 가장 처음 일치한 텍스트를 반환한다.대다수 정규식 구현에서는 일치하는 목록 모두 얻을 수 있다. ** 대소문자 다루기 -정규식에서는 대소문자를 구별하기 때문에 Ben 은 ben 과 일치하지 않는다고 인식한다.하지만 대다수 정규식 구현에는 대소문자 구별을 무시하는 기능이 있다. * 모든 문자 찾기 -정규식에서는 특별한 문자들 혹은 문자 집합들을 써서 무엇을 검색할지 결정한다.마침표(.) 문자는 .. 2019. 12. 24.
[도서 정리] 1. 정규 표현식 소개 - 손에 잡히는 10분 정규 표현식 1. 정규 표현식 소개 - 손에 잡히는 10분 정규 표현식 * 왜 필요한가? * 정규 표현식은 어떻게 사용하는가? -원하는 정보가 어디에 있는지 찾거나(검색), 정보를 찾은 뒤에 편집(치환)하는 목적으로 사용한다.단순히 이야기하면 정규 표현식을 사용하는 이유는 검색과 치환이 전부다. ** 정규 표현식으로 검색하기 ** 정규 표현식으로 치환하기 -정규 표현식의 진가는 치환을 수행할 때 나타난다. * 그래서 정확히 정규 표현식이란 무엇인가? -정규표현식은 텍스트를 찾고 조작하는데 쓰는 문자열이다.정규표현 언어는 완전한 프로그래밍 언어가 아니다.정규표현식은 다른 프로그래밍 언어나 제품에 포함된 작은 언어(mini language)일 때가 많다.” -정규 표현식을 통달하는 과정에서 구문을 익히는 것은 가장 쉬운.. 2019. 12. 23.
반응형