topgaren / DevStudy

0 stars 0 forks source link

정규 표현식 #8

Open topgaren opened 4 years ago

topgaren commented 4 years ago

정규 표현식

정규 표현식(Regular expression, 간단히 regexp 또는 regex)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 프로그램을 작성할 때는 특성상 일정한 규칙을 가진 텍스트 문자열을 사용하는 경우가 많은데, 이럴 때 정규 표현식을 사용한다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있으며, 특히 펄과 Tcl은 언어 자체에 강력한 정규 표현식을 구현하고 있다.

정규 표현식 문법

표현식 설명
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자 (문자의 종류 가리지 않음)단, \ 는 넣을 수 없음
* 앞 문자가 없을 수도, 무한정 많을 수도 있음
+ 앞 문자가 하나 이상
? 앞 문자가 없거나 하나 있음
[] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타낸다. []내에서 ^가 선행되어 존재하면 이는 NOT을 나타낸다
{} 횟수 또는 범위를 나타낸다
( ) 소괄호 안의 문자를 하나의 문자로 인식
| 패턴 안에서 or 연산을 수행할 때 사용
\s 공백 문자
\S 공백 문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파멧이나 숫자를 제외한 문자
\d 숫자. 패턴 [0-9]와 동일
\D 숫자를 제외한 모든 문자. 패턴 [^0-9]와 동일
\ 정규표현식 역슬래시(\)는 확장 문자를 뜻함. 역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미
(?i) 앞 부분에 (?i)라는 옵션을 넣어주면 대소문자를 구분하지 않음

자주 쓰이는 패턴

1) 숫자만 : ^[0-9]*$
2) 영문자만 : ^[a-zA-Z]*$
3) 한글만 : ^[가-힣]*$
4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$
5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$
7) 일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$
8) 주민등록번호 : \d{6} \- [1-4]\d{6}
9) IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

Reference 위키백과 - "정규 표현식" https://highcode.tistory.com/6