지금까지 살펴봤던 정규표현식의 패턴은 Hello 같이 정확하게 원하는 대상 문자 표현하는 것들이었다.
하지만 우리가 원하는 것이 정확하지 않다면?
이제 page5를 살펴보자.
.(포인트)는 어떤 문자와도 매치된다. 라는 설명이 달려있다.
이게 무슨말일까?
Source
Regular expressions are powerful!!! |
소스는 다음과 같다. 예제를 살펴보면,
Case 1
Regular Expression: | . |
---|---|
First match: | Regular expressions are powerful!!! |
All matches: | Regular expressions are powerful!!! |
예제를 살펴보면 정규표현식으로 .(포인트)를 입력했다. 그랬더니 처음에는 R이 선택되고,
all matches로는 모든 문자가 선택된다.
즉 .은 어떠한 문자건 공백이건 특수문자건 상관없이 그 모든것(any character)들을 가리키는 특수한 기호이다.
만약 우리가 .....(6개) 이라는 정규표현식을 작성한다면
Case 2
Regular Expression: | ...... |
---|---|
First match: | Regular expressions are powerful!!! |
All matches: | Regular expressions are powerful!!! |
all matches에서는 6개의 문자가 계속 선택되고(6의 배수만큼), 모자라는 부분(나머지)은 선택되지 않는 것이다.
즉 .이라는 애도 ^나 $나 \ 같이 특수한 의미를 가진 문자가 되는 것이다.
이제 page6를 살펴보자.
그렇다면, 너무나도 당연하지만 문자 자체로의 .을 선택하기 위해선 어떻게 해야할까?
다음과 같은 소스가 있다고 하자
Source
O.K. |
여기서 .을 선택하고 싶어 .이라는 정규표현식을 입력한다면?
Case 1
Regular Expression: | . |
---|---|
First match: | O.K. |
All matches: | O.K. |
이렇게. 특수한 기호인 .은 모든 문자를 의미하고, 따라서 first match는 첫번째 문자,
all matches는 모든 문자를 선택하게 될 것이다.
하지만 우린 .이라는 기호 그 자체를 선택하고 싶다!
이를 위해선 .이라는 특수한 문자가 가진 기능을 죽여야 한다.
죽이기 위해선 \(이스케이프)를 앞에 놓는다.
Case 2
Regular Expression: | \. |
---|---|
First match: | O.K. |
All matches: | O.K. |
이처럼 간단하게 \. 을 입력하면 문자 자체로의 .을 찾으란 의미가 되고
따라서 .들을 찾게 된다.
그럼 이런 정규표현식은 어떻게 해석될까?
\..\.
일단 \는 특수한 기호를 가진애로. 뒤에 있는 애랑 세트다
따라서 다시 해석해보면
문자 그대로의 . + 모든 문자를 가리키는 기능을 가진. + 문자그대로의.
이 된다.
따라서 .(어떤문자든상관x).을 찾아야 하는 것이다.
Case 3
Regular Expression: | \..\. |
---|---|
First match: | O.K. |
All matches: | O.K. |
따라서 .과 . 사이에 어떤 문자가 와도 되는 패턴이기 때문에
.K.이 선택되는 것이다.
'IT 인터넷 > 정규표현식' 카테고리의 다른 글
[정규표현식] 수량자 (0) | 2018.06.26 |
---|---|
[정규표현식] 특정 문자와 범위 (0) | 2018.06.26 |
[정규표현식] 특정 문자와 범위 (0) | 2018.06.26 |
[정규표현식] 위치와 이스케이핑 (0) | 2018.06.20 |
[정규표현식] 패턴 기본 (0) | 2018.06.20 |