정규 표현식이란?
프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규식이라고도 부른다. 정규 표현식은 사용되는 언어마다 문법이 조금씩 다를 수도 있다.
정규 표현식 | 의미 | 자세한 설명 |
abc | Letters | abc 글자 그대로 일치 |
123 | Digits | 123 숫자 그대로 일치 |
. | Any Character | 1개의 아무 문자 일치 (조커카드. 줄바꿈 문자를 제외한 모든 문자를 표현할 수 있다. 빈칸도 가능하고, 특수문자도 가능하다) |
\. | Period | 마침표 (마침표를 찾으려면, 이스케이프 문자인 역슬래쉬(\)를 앞에 붙인다) |
활용 1. 대괄호 사용해서 문자 패턴 찾기
- 대괄호( [ ] ) 는 문자 집합을 의미한다.
- 대괄호( [ ] ) 안에 존재하는 원소 모두 일치(AND)가 아니라, 하나의 원소라도 일치(OR)하는 문자를 찾는다.
- 대괄호( [ ] ) 안에 캐럿( ^ ) 이 맨 앞에 있는 경우, 캐럿( ^ ) 뒤에 나오는 원소들을 제외하는 조과 일치하는 문자를 찾는다.
- 대괄호( [ ] ) 안에 하이픈 ( - ) 이 원소 사이에 있는 경우, 하이픈 앞뒤를 포함하는 범위에 해당하는 문자를 찾는다. 대괄호안에서 하이픈을 문자 자체로 찾으려면 이스케이프 문자인 역슬래쉬(\)를 앞에 붙여야한다. (대괄호 밖에서는 하이픈이 문자 자체로 사용되므로 이스케이프 문자를 앞에 붙일 필요가 없다.)
정규 표현식 | 의미 | 자세한 설명 |
[abc] | Only a, b, or c | a 또는 b 또는 c |
[^abc] | Not a, b, nor c | a 또는 b 또는 c 를 제외한 문자중 하나 |
[a-z] | Characters a to z | a 부터 z 까지의 글자 중 하나 |
[A-Za-z] | Characters A to Z, Characters a to z | a 부터 z 까지의 글자 중 하나 (대문자도 포함) |
[0-9] | Numbers 0 to 9 | 0 부터 9 까지의 숫자 중 하나 |
[^0-9] | Not Numbers | 숫자 제외한 문자중 하나 |
이스케이프 문자인 역슬래쉬(\) 뒤에 문자를 붙여 표현하는 방법도 있다.
정규 표현식 | 의미 | 자세한 설명 |
\w | Any Alphanumeric character | 대소문자를 포함한 모든 글자와 숫자와 언더바(_) 중 하나 (언더바를 제외한 특수문자는 제외) 👉 [A-Za-z0-9_] 와 같은 표현 |
\W | Any Non-alphanumeric character | 대소문자를 포함한 모든 글자와 숫자와 언더바(_)를 제외한 문자 중 하나 👉 [^A-Za-z0-9_] 와 같은 표현 |
\d | Any Digit | 0 부터 9 까지의 숫자 중 하나 👉 [0-9] 와 같은 표현 |
\D | Any Non-digit character | 숫자 제외한 문자중 하나 👉 [^0-9] 와 같은 표현 |
\s | Any Whitespace | 공백 문자 |
\S | Any Non-whitespace character | 공백 문자를 제외한 문자 중 하나 |
활용 2. 반복되는 문자 패턴 찾기
- 'abc' 라는 문자열 찾기 위한 정규 표현식은, \w 이 아니라 \w\w\w 이렇게 작성해야한다.
- 이렇게 글자 n개와 일치하는 반복 문자 패턴을 찾기 위한 정규 표현식이 있다.
- 중괄호 ( { } ) 를 사용하여 표현하거나, 미리 정의된 반복 회수를 다양한 메타 문자로 지정하여 표현할 수도 있다.
정규 표현식 | 의미 | 자세한 설명 |
{m} | m Repetitions | 문자가 딱 m개 있는 경우 |
{m,n} | m to n Repetitions | 문자가 m개 이상 n개 이하로 있는 경우 |
{m,} | more than m Repetitions | 문자가 m개 이상 있는 경우 (최소 m개 이상만 있으면 일치함) |
? | Optional character | 없거나, 하나가 있는 경우 |
* | Zero or more repetitions | 없거나, 하나 이상 있는 경우 |
+ | One or more repetitions | 하나 이상 있는 경우 (아예 없으면 일치하지 않음) |
^... | Starts | 특정 문자로 시작하는 경우 |
…$ | Ends | 특정 문자로 끝나는 경우 |
처음 이해하기에는 그리 어렵지 않으나 본격적으로 사용해보면 생각한 것보다 원하는 패턴을 찾는게 꽤 어렵다. 정규 표현식을 능숙하게 사용하려면 많은 연습이 필요하다.
'데이터 처리 도구 > SQL' 카테고리의 다른 글
[MySQL] WITH절 사용하여 CTE 생성하기 (0) | 2024.07.28 |
---|---|
[MySQL] 정규표현식 함수 (Regular Expressions) (0) | 2024.07.11 |
[MySQL] 집합 연산(1): UNION, UNION ALL 사용하여 조회 결과 결합하기 (0) | 2022.09.07 |
[MySQL] 비트 연산과 관련 함수(CONV, BIN, BIT_LENGTH) (0) | 2022.09.04 |
[MySQL] 날짜/시간 다루기 (2) 연산하기 (0) | 2022.08.30 |