REGEX 검색 결과
정규표현식 중에 (?=...), (?!...)와 같이 쓰는 패턴이 있습니다. 정규표현식에서 lookahead라고 하는데요. 간단하게 알아보겠습니다. 이 패턴으로 어떻게 기준이 잡히는지부터 보는 것이 빠르겠네요. (?=foo)f 패턴을 보겠습니다. foofoofoofoofoof를 입력했을 때, 패턴이 어떻게 매치되는지부터 보겠습니다. 1번째부터 5번째 f까지 잡히고, 6번째 f는 match가 되지 않음을 알 수 있어요. 왜? (?=foo)만 입력했을 때 어떻게 기준이 잡히나 보겠습니다. 1번째 f 앞에 기준선이 있습니다. 2, 3, 4, 5번째 f 앞에도 기준선이 있습니다. 그런데, 6번째 f 앞에는 없습니다. 어떤 기준으로 잡히는 것일까요? foo라는 패턴 앞에 기준선이 붙어요. 1, 2, 3, 4, 5..
regex에서 lazy quantifier가 어떻게 동작하는지 간단하게 알아봅시다. 먼저 R{2,} 뒤에 ?를 붙였습니다. 이 때 ?는 lazy quantifier 역할을 합니다. match as few character as possible이라 되어 있는데요. 가능한 적은 문자를 match 한다고 되어 있습니다. greedy 속성과는 정반대임을 알 수 있습니다. RRRRR, RR이 있는데요. R{2,}에 매치되는데, 가능한 적은 문자로 매치되는 패턴은 어떤 것인가요? RRRRR에서는 RR입니다. 그 다음에 RRR에서 RR이 또 매치가 됩니다. 그렇기 때문에, RRRRR에서는 2개가 match 되고, RRR에서는 RR 하나만 매치가 됩니다. 이는, 패턴 R{2,}와는 다른데요. 요래 입력하고 패턴을 찾아..
정규표현식을 쓰는 이유 중 하나는, 패턴을 찾기 위해서입니다. 그런데, group capture를 해서 가공할 수도 있는데요. 예제를 통해서 알아보도록 하겠습니다. 정규 표현식에 체크한 상태에서, notepad++에서 찾을 내용은 ([0-9]{2,})-([0-9]{3,})-([0-9]{3,})로 입력하였습니다. 입력은 위와 같습니다. 국번이 있는 걸로 보아서는 그냥 전화 번호인 모양입니다. 모두 바꾸기를 눌러 보겠습니다. 그러면 국번만 쏙 뽑혀서 나옴을 볼 수 있어요. 02는 서울, 031은 경기도, 032는 인천이네요. 어떤 원리로 이렇게 뽑혔는가? 천천히 보도록 하겠습니다. 먼저 소괄호로 감싸져 있는 부분이 보이실 텐데요. 이는 캡쳐한다는 것을 의미합니다. 그러면, 캡쳐되는 부분은 위 그림과 같이 될..
최근댓글