정규 표현식(regular expression)
• bamjun
##정규 표현식(Regular Expression)
정규 표현식(Regular Expression)은 문자열에서 특정 패턴을 찾기 위해 사용되는 강력한 도구입니다. 정규 표현식을 구성하는 기본 구조는 다음과 같습니다:
1. 기본 문자:
- 일반 문자:
a
,b
,1
,2
등과 같이 일반 문자들은 해당 문자 자체를 의미합니다. - 특수 문자:
.
,^
,$
,*
,+
,?
,{
,}
,[
,]
,\
,|
,(
,)
등과 같은 특수 문자들은 특별한 의미를 가지며, 정규 표현식에서의 동작을 제어합니다.
2. 메타 문자:
.
: 줄바꿈 문자를 제외한 모든 단일 문자와 일치합니다.^
: 문자열의 시작과 일치합니다.$
: 문자열의 끝과 일치합니다.
3. 문자 클래스:
[...]
: 대괄호 안에 있는 어떤 문자와도 일치합니다. 예를 들어,[abc]
는a
,b
,c
중 하나와 일치합니다.[^...]
: 대괄호 안의 문자를 제외한 모든 문자와 일치합니다.[a-z]
:a
부터z
까지의 모든 소문자와 일치합니다.
4. 수량자(Quantifiers):
*
: 0회 이상 연속으로 반복되는 문자와 일치합니다.+
: 1회 이상 연속으로 반복되는 문자와 일치합니다.?
: 0회 또는 1회만 나타나는 문자와 일치합니다.{n}
: 정확히n
회 반복되는 문자와 일치합니다.{n,}
: 최소n
회 반복되는 문자와 일치합니다.{n,m}
: 최소n
회, 최대m
회 반복되는 문자와 일치합니다.
5. 그룹화 및 참조:
(abc)
: 괄호 안의 문자열을 그룹화합니다. 이를 통해 여러 문자열 조합을 하나의 단위로 취급할 수 있습니다.\n
:n
번째 캡쳐 그룹을 참조합니다.
6. 이스케이프(Escape):
\\
: 특수 문자 앞에\
를 사용하여 해당 문자를 문자 그대로 해석하게 합니다.
정규 표현식은 매우 다양하고 복잡한 패턴을 표현할 수 있어, 문자열 검색, 추출, 대체 작업에 널리 사용됩니다. 각 프로그래밍 언어는 정규 표현식을 지원하는 라이브러리나 내장 기능을 제공하며, 기본적인 개념은 대부분의 언어에서 비슷하지만, 구체적인 구현 및 지원 범위는 언어에 따라 다를 수 있습니다.
다음은 몇 가지 일반적인 시나리오에 대한 정규 표현식 예제입니다:
1. 이메일 주소 검증
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
이 정규 표현식은 대부분의 이메일 주소 형식과 일치합니다.
2. 전화번호 검증
\+?(\d{1,3})?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})
이 정규 표현식은 다양한 형태의 전화번호 형식과 일치합니다. 국제 전화번호 형식을 포함하며, 대시, 공백, 괄호를 포함할 수 있습니다.
3. URL 검증
(http|https):\/\/(www\.)?[a-zA-Z0-9-\.]+\.(com|org|net|mil|edu|CA|uk|de|jp)
이 정규 표현식은 HTTP 또는 HTTPS로 시작하는 URL을 검사합니다. www.
는 선택적이며, 여러 상위 도메인을 인식합니다.
4. 날짜 형식 검증 (YYYY-MM-DD)
(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])
이 정규 표현식은 “YYYY-MM-DD” 형식의 날짜와 일치합니다. 1900년부터 2099년까지의 년도를 허용합니다.
5. HTML 태그 찾기
<([a-z]+) *[^/]*?>
이 정규 표현식은 HTML 문서에서 태그를 찾습니다. 여는 태그(<tag>
)와 일치합니다.
사용 방법 예시 (파이썬)
import re
# 이메일 주소 검증
email = "example@test.com"
if re.match(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', email):
print("유효한 이메일 주소입니다.")
else:
print("유효하지 않은 이메일 주소입니다.")
정규 표현식은 매우 강력하며, 이러한 예시 외에도 다양한 문자열 처리 작업에 활용됩니다. 사용하는 프로그래밍 언어의 정규 표현식 라이브러리 문서를 참고하면 더 다양한 패턴과 기능을 발견할 수 있습니다.
Share on: