프로그래밍 관련/정규 표현식
정규 표현식(Regex) 9편. 전후방탐색(lookaround)
정규 표현식(Regex) 9편. 전후방탐색(lookaround)
2012.12.271. 전방 탐색(lookahead) 전방 탐색(lookahead)이란 작성한 패턴에 일치하는 영역이 존재하여도 그 값이 제외되어서 나오는 패턴입니다. 전방 탐색 기호는 ?= 이며, = 다음에 오는 문자가 일치하는 영역에서 제외됩니다. 또한, 전방 탐색은 하위 표현식과 같이 소괄호로 감싸주어야만 합니다. 우선은 한번 보도록 합시다. Reg. Expression: .+(?=:) Text: http://www.abc.com https://www.abc.com http://www.abc.net 위에 쓰인 정규 표현식을 살펴보자면, 아무 문자가 한번 이상 연속적으로 등장하고 콜론(:) 문자가 등장하는 문자열 중에서, 콜론(:) 문자는 일치하는 영역에서 제외됩니다. 만약, 전방 탐색 기호를 쓰지 않고 콜론을 그대로..
정규 표현식(Regex) 강좌 8편. 역참조(backreferences)
정규 표현식(Regex) 강좌 8편. 역참조(backreferences)
2012.12.251. 역참조(backreferences) 역참조(backreferences)란 무엇일까요? 말 그대로 역으로 참조하는 것을 나타냅니다. 정규 표현식에서는 패턴의 일부를 하위 표현식으로 묶으면, 첫번째로 나타나는 부분 문자열을 찾은 뒤에 역참조를 통해 이후에 나타나는 부분 문자열을 찾을 수 있습니다. 이때, 각 하위 표현식은 번호로 식별됩니다. 이 역참조를 통해서, 반복되는 두 문자를 쉽게 찾을 수 있습니다. 예를 들어서, why so so serious에서 역참조를 통해 so so를 일치시킬 수 있습니다. 더 확실한 이해를 위해 아래 예제부터 살펴보도록 합시다. Reg. Expression:\b([a-z]+) \1\bText:why so so serious 위의 정규 표현식을 자세히 살펴보면, \b라는 ..
정규 표현식(Regex) 강좌 7편. 하위 표현식(Subexpression)
정규 표현식(Regex) 강좌 7편. 하위 표현식(Subexpression)
2012.12.251. 하위 표현식(Subexpression) 하위 표현식(Subexpression)이란, 특정 패턴, 표현식을 하나의 항목으로 처리하는 것입니다. 이 하위 표현식을 사용하려면 소괄호를 사용해야 합니다. 참고로, 소괄호 역시도 메타 문자이기 때문에, 소괄호 그 자체를 찾으려면 \(, \)와 같이 이스케이프 해주어야만 합니다. 아래 예를 한번 보도록 합시다. Reg. Expression: abc{2} Text: abcc abcabc 위의 일치된 텍스트를 보시면, 예상과는 다르게 abcabc가 아닌 abcc가 일치되었습니다. 무엇이 잘못되었나 살펴보았더니, {2}는 앞에 등장한 문자의 범위를 지정하는 녀석입니다. {2} 앞에 있는 문자는 c이고, c가 2번 등장하니 abcc가 일치될 수 밖에 없었습니다. 이제..
정규 표현식(Regex) 강좌 6편. 수량자(Quantifier)
정규 표현식(Regex) 강좌 6편. 수량자(Quantifier)
2012.12.241. 수량자(Quantifier) 오늘 배우게 될 수량자는 아래와 같습니다. (참고로 앞에서 배웠던 메타 문자 +, *, ?도 수량자에 속함) 수량자 설명 {n} 정확히 n개만을 찾습니다. {n,} n개 이상을 찾습니다. {n,m} 최소 n개, 최대 m개의 경우를 찾습니다. (n 혹은 m은 정수이고 음수가 올 수 없습니다.) 위의 수량자들을 차례대로 알아보도록 합시다. 우선 첫번째 수량자인 {n} 입니다. 이 수량자가 뒤에 따라오면, 앞에 있는 문자 집합 혹은 문자가 n번 연속해서 일치하는지 확인합니다. 주의하셔야 할 부분은, 이상도 아니고 이하도 아닌 정확히 n개만을 찾는다는 겁니다. 예를 들어서, [0-9]{3}는 숫자가 세자리로 연속되어야 일치한다는 것입니다. 만약 두자리라던가, 네자리라면 일치하지..
정규 표현식(Regex) 강좌 5편. 연속된 문자 찾기
정규 표현식(Regex) 강좌 5편. 연속된 문자 찾기
2012.12.211. + (문자가 하나 이상 있으면 일치) 지금까지 배운 정규 표현식을 사용하여 이메일 형식을 검색하고자 한다면, 어떤 방식으로 검색을 할 수 있을까요? 여태까지 배운 내용으로는 "a@b.c" 즉, \w@\w\.\w 라고 만들 수 있겠습니다. 그러면, "abc@def.ghi", "abcd@efgh.ijk" 같은 연속된 문자는 어떻게 검색을 할까요? 그것은 바로, 지금 배우게 될 +란 메타 문자로 해결할 수 있습니다. Reg. Expression:\w+@\w+\.\w+Text:id@gmail.comid@daumnetid@naver.comid@nate.comid@google 정규 표현식을 차례대로 살펴보도록 합시다. \w는 즉, [a-zA-Z0-9_], 그리고 그 다음 등장하는 메타 문자 +는 문자가 하나 ..
정규 표현식(Regex) 강좌 4편. 메타 문자(meta character)
정규 표현식(Regex) 강좌 4편. 메타 문자(meta character)
2012.12.201. 메타 문자(meta character) 정규 표현식에서의 메타 문자(meta character)는 특별한 존재입니다. 메타 문자 그 자체는 특별한 녀석이며, 이미 사전에 약속되어진 문자를 뜻합니다. (특수한 문자나 다름이 없음) 사전에 약속된 문자이기에, 메타 문자는 그대로 쓸 수 없으며 만약 문자로 쓰려면 역슬래시(\)를 하나 더 덧붙여 주어야 합니다. 아래 표를 한번 보도록 합시다. 메타 문자 설명 \v 수직 탭 \n 개행 \f 폼 피드 \r 캐리지 리턴 \t 탭 [\b] 백스페이스 \d [0-9]와 동일한 기능 \D [^0-9]와 동일한 기능 \w [a-zA-Z0-9_]와 동일한 기능 \W [^a-zA-Z0-9_]와 동일한 기능 \s[\f\n\r\t\v]와 동일한 기능 \S [^\f\n\r\t..
정규 표현식(Regex) 강좌 3편. 문자 집합(character set)
정규 표현식(Regex) 강좌 3편. 문자 집합(character set)
2012.12.191. 문자 집합(character set) 이번에는 어떤 문자든 통하는 . 문자와는 달리, 대괄호([])를 사용하여 문자 집합을 표현해보도록 할 것입니다. 문자 집합의 예를 한번 살펴보고, 문자 집합이 어떤 것인지 한번 생각해봅시다. Reg. Expression:f[ie]Text:fire siren female finally apple airport 위에 쓰인 정규 표현식을 보자면 대괄호로 둘러싸인 i와 e를 한번 보도록 합시다. 여기서 i와 e를 같이 생각하시면 안됩니다. "f 다음에 i 혹은 e라는 문자가 등장하는 경우에" 일치합니다. 즉, 문자 집합 중 하나가 일치해야 하는거죠. 이번에는, 문자 집합의 범위를 사용하여 검색을 해보도록 해봅시다. Reg. Expression:...[0123456789..
정규 표현식(Regex) 강좌 2편. 간단한 문자열 찾기
정규 표현식(Regex) 강좌 2편. 간단한 문자열 찾기
2012.12.191. 간단한 문자열 찾기 이번에는 평범한 텍스트를 이용해서 검색을 해보도록 하겠습니다. (평범한 텍스트도 정규 표현식이 될 수 있음) 아래를 한번 보도록 합시다. Reg. Expression:TextText:ABCText Text ITextyioTextm Textll abcdety 그리고 한번, Text에 있는 "Text"의 'T'를 대문자가 아닌 소문자로 바꾸어 결과를 확인해봅시다. 대소문자를 구분하지 않고 text도, Text도 검색이 되는 것을 확인하실 수 있습니다. (VB6 같은 경우는 IgnoreCase라고 해서 대소문자 무시를 활성화 시킬수 있고, 비활성화 시키는 것도 할 수 있습니다. 다른 언어도 마찬가지로 존재합니다.) 이번에는, 그대로의 텍스트가 아닌 모르는 문자까지도 찾을 수 있는 방법..
정규 표현식(Regex) 강좌 1편. 소개
정규 표현식(Regex) 강좌 1편. 소개
2012.12.191. 정규 표현식(Regular Expression, Regex)란 무엇인가? 오랜만에 강좌를 시작해보는듯 합니다. 시험기간에 밀려 블로그에 포스팅을 하지 못했는데, 이제야 글을 쓰게 되네요. 잡담은 여기서 멈추고, 본론으로 들어가도록 하겠습니다. 혹시 정규 표현식(Regular Expression, Regex)라고 들어보신적이 있으신가요? 이 정규 표현식은 텍스트를 검색하거나, 혹은 치환하거나 어떠한 문자열을 추출하고자 할때 주로 쓰이는 녀석입니다. 간단히 말하자면, 메타 문자(특수한 문자/기호)를 이용하여 이루어진 패턴을 말합니다. 정규 표현식을 사용하면, 패턴(pattern)을 통해 세밀하게 문자열을 찾아낼 수 있습니다. 아래와 같이 말이죠. 패턴(Pattern):https?://[\w./]+텍스트..