Regular Expression
정규식이란?
문자열 집합을 표현하는 형식 언어를 뜻한다.
문자열 검색에서 많이 사용되는 정규식에 대해서 알아보겠다.
정규식의 기본 형태는 아래와 같다.
<검색할 식>/<검색옵션(flag)>
먼저 검색 옵션에 대해서 알아보자. 검색 옵션에서는 검색 범위와 대소문자 구분 그리고 유니코드 검색 등의 검색 방법에 대한 설정을 할 수 있다.
검색옵션 | 의미 | 기능 |
---|---|---|
g | global | 문자열에서 패턴 매칭이 반복되는 문자를 전체에서 검색 |
i | case insensitive | 대소문자 구분 |
m | multi line | 한 줄을 한 문장으로 인식 |
s | single line | 텍스트 전체를 한 문장으로 인식 |
u | unicode | 유니코드 문자 rule로 검색 |
y | sticky | 문자 내 특정 위치에서 검색 |
다음으로 검색할 식의 syntax에 대해서 알아보자. 검색할 식은 크게 그룹과 범위, 수량자, 경계범위, 문자 클래스 등을 지정할 수 있다. 각 항목 별 Keywork와 예제를 살펴보자. 예제에서 검색 옵션은 기본 옵션인 /g로 설정하였다.
그룹과 범위 지정
문자간 논리 연산과 grouping을 설정하는 Keyword의 모음이다.
Keyword | 기능 |
---|---|
| | or |
() | grouping |
[] | 문자 집합 |
^ | not |
?: | 찾지만 기억하지는 않음 |
이 예제에서는 | **연산자를 사용하여 **hi 또는 hello 라는 단어를 검색한다. 검색 결과는 group1번으로 지정된다.
이 예제는 | 연산자와 ()을 사용하여 Ya 와 ya를 찾는 예제이다. y를 그룹화 하여 검색했기 때문에 검색 결과의 첫 문자는 group1이 되겠다. group의 개념은 결과를 grouping 할 때 사용한다.
이 예제는 grouping에 대한 결과를 좀 더 이해하기 쉽도록 2가지 그룹으로 검색하였다. hello와 hi **는 **group1, there는 group2 에 속한다.
[] 는 문자열 검색에서 가장 많이 사용되는 keyword로 검색할 문자열의 종류를 지정한다. 이 예제에서는 gray, grby, grcy, grdy, … 를 검색한다. [0-9], [가-힣], [a-Z] 등의 표현을 주로 사용한다.
()내부의 ?: keyword는 검색은 하지만 grouping은 하지 않아야 할 경우에 사용한다.
[] 내부의 ^ keyword는 [] 안의 문자열 이외의 문자를 검색하는 not을 의미한다.
수량자(Quantifiers) 지정
찾을 문자열의 반복 수량을 설정하는 Keyword의 모음이다.
Keyword | 기능 |
---|---|
? | 문자열 0번 이상 1번 이하 반복 |
* | 문자열 0번 이상 반복 |
+ | 문자열 1번 이상 반복 |
{n} | 문자열 n번 반복 |
{min,} | 문자열 min번 이상 반복 |
{min, max} | 문자열 min번 이상 max번 이하 반복 |
이 예제는 *를 사용하여 gry, gray, graay, graaay, … 를 검색한다.
이 예제는 +를 사용하여 gray, graay, graaay, … 를 검색한다.
이 예제는 {n}을 사용하여 graay를 검색한다.
이 예제는 {min,}을 사용하여 graay, graaay, graaaay, … 를 검색한다.
이 예제는 {min, max}을 사용하여 gray, graay를 검색한다.
경계범위(Boundary-type) 지정
경계범위는 문장이나 단어에서 내가 찾는 문자의 위치를 지정하는 keyword의 모음 이다.
keyword | 기능 |
---|---|
\b | 단어 경계 |
\B | 단어 경계 아님 |
^ | 문장의 시작 |
$ | 문장의 끝 |
이 예제는 \b를 사용하여 단어의 시작에 위치한 Ya를 검색한다.
이 예제는 \b를 검색 문자의 끝에 삽입하여 단어의 끝에 위치한 Ya를 검색한다.
\B 는 \b 의 반대의미인 단어의 경계가 아닌 문자열 중 일치하는 대상을 검색한다. 이 예제는 단어의 처음에 위치하지 않은 Ya를 검색한다.
이 예제는 단어의 끝에 위치하지 않은 Ya를 검색한다.
/gm 검색옵션과 ^ 를 사용하여 문장의 시작에 위치한 Ya를 검색한다.
/g 검색 옵션과 ^ 를 사용하여 글 전체가 하나의 문장으로 간주된 상태에서 문장의 시작에 위치한 Ya를 검색한다.
$ 를 사용하여 문장의 끝에 위치한 Ya를 검색한다.
문자 클래스 지정
검색할 문자 타입을 저장하는 keyword의 모음이다. 영문 키워드의 대소문자는 부정을 의미한다.
Keyword | 기능 |
---|---|
\ | 특수 문자 앞 prefix |
. | 줄바꿈 문자를 제외한 모든 문자 |
d | 숫자 |
D | 숫자가 아닌 문자 |
w | word 문자 |
W | word 문자가 아닌 문자 |
s | 공백문자 |
S | 공백문자가 아닌 문자 |
이 예제는 \. **을 사용하여 **. 문자를 검색한다.
이 예제는 .을 사용하여 줄바꿈 문자를 제외한 모든 문자를 검색한다.
이 예제는 \d 를 사용하여 숫자를 검색한다.
이 예제는 \D를 사용하여 숫자를 제외한 모든 문자를 검색한다.
이 예제는 \w를 사용하여 공백, 특수문자를 제외한 모든 문자를 검색한다.
이 예제는 \W 를 사용하여 공백, 특수문자를 검색한다.
이 예제는 \s 를 사용하여 공백문자만 검색한다.
이 예제는 \S 를 사용하여 공백문자가 아닌 문자를 검색한다.
모든 실습 예제들은 정규식테스트 웹 페이지에서 진행하였다. 정규식 입력은 물론이고, 사용자가 검색 대상 내용을 입력할 수 있으니 참고하면 좋을 듯 하다.
댓글남기기