데이터 처리 도구/SQL

정규 표현식(Regular Expression)

yourhm 2024. 3. 20. 11:19

정규 표현식이란?

프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어를 말한다. 정규식이라고도 부른다. 정규 표현식은 사용되는 언어마다 문법이 조금씩 다를 수도 있다. 

 

정규 표현식 의미 자세한 설명
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 특정 문자로 끝나는 경우

 

 

처음 이해하기에는 그리 어렵지 않으나 본격적으로 사용해보면 생각한 것보다 원하는 패턴을 찾는게 꽤 어렵다. 정규 표현식을 능숙하게 사용하려면 많은 연습이 필요하다.