정규 표현식 (영어 regular expression, 간단히 regexp 또는 regex) 또는 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다. 많은 프로그래밍 언어나 텍스트 에디터 에서 문자열의 검색과 치환을 위해 지원하고 있습니다. 메타문자(특수한 문자/기호) 를 이용하여 이루어진 패턴을 말합니다.
정규 표현식을 사용하면, 패턴을 통해 원하는 문자열을 찾아낼 수 있습니다.
| 메타문자 | 설명 |
|---|---|
| ^x | 문자열이 x로 시작합니다. |
| x$ | 문자열이 x로 끝납니다 |
| .x | 임의의 한 문자를 표현합니다. |
| x+ | x가 1번이상 반복합니다. |
| x? | x가 존재하거나 존재하지 않습니다. |
| x* | x가 0번이상 반복합니다. |
| x | y |
| (x) | ()안의 내용을 캡쳐하며, 그룹핑 합니다. |
| (x)(?:y) | 캡쳐하지 않는 그룹을 생성할 경우 ?:를 사용합니다. 결과값 배열에 캡쳐하지 않는 그룹은 들어가지 않습니다. |
| x{n} | x를 n번 반복한 문자를 찾습니다. |
| x{n,} | x를 n번 이상 반복한 문자를 찾습니다. |
| x{n,m} | x를 n번 이상 m번이하 반복한 문자를 찾습니다. |
| 메타문자 | 설명 |
|---|---|
| [xy] | x,y중 하나를 찾습니다. |
| [^xy] | x,y를 제외하고 문자 하나를 찾습니다. (문자 클래스 내의 ^는 not을 의미합니다.) |
| [x-z] | [x-z] 사이의 문자중 하나를 찾습니다. |
| ^ | ^(특수문자)를 식에 문자 자체로 포함합니다. (escape) |
| \b | 문자와 공백사이의 문자를 찾습니다. |
| \B | 문자와 공백사이가 아닌 값을 찾습니다. |
| \d | 숫자를 찾습니다. |
| \D | 숫자가 아닌 값을 찾습니다. |
| \s | 공백문자를 찾습니다. |
| \S | 공백이 아닌 문자를 찾습니다. |
| \t | Tab 문자를 찾습니다 |
| \v | Vertical Tab 문자를 찾습니다. |
| \w | 알파벳 + 숫자 + _ 를 찾습니다. |
| \W | 알파벳 + 숫자 + _ 를 제외한 모든 문자를 찾습니다.. |
탐욕적 수량자는 가능한한 가장 큰 덩어리를 찾으려 한다는 뜻 입니다. 탐욕적 수량자는 문자열 끝에서부터 찾습니다.
게으른 수량자는 탐욕적 수량자와는 반대로 가장 근접한 최소의 덩어리를 찾으려 한다는 뜻 입니다. 게으른 수량자는 문자열 앞에서부터 찾습니다.
| 탐욕적 수량자 | 게으른 수량자 |
|---|---|
| * | *? |
| + | +? |
| {n, } | {n, } |
대괄호'[]'가 붙어있는 모양자체가 표현식 입니다. 문자클래스로 사용할 때에는 대괄호를 씌워서 사용해야합니다. ex) [[:alnum:]]
| 메타문자 | 설명 |
|---|---|
| [:alnum:] | 알파벳과 숫자를 찾습니다. |
| [:alpha:] | 알파벳을 찾습니다. |
| [:digit:] | 0~9 사이를 찾습니다. |
| [:lower:] | 알파벳 소문자를 찾습니다. |
| [:upper:] | 알파벳 대문자를 찾습니다. |
| [:blank:] | 탭과 공백문자를 찾습니다. |
Flag를 미설정 시 문자열 내에서 검색 대상이 여러 개여도 한 번만 찾게됩니다.
| Flag | 설명 |
|---|---|
| g | Global - 문자열 내의 모든 패턴을 찾습니다. |
| i | Ignore Case - 문자열의 대소문자를 구별하지 않습니다. |
| m | Multi Line - 문자열이 행이 바뀌어도 찾습니다. |