관리 메뉴

JIE0025

정규표현식 개념, 패턴, 연습 본문

기타 학습

정규표현식 개념, 패턴, 연습

Kangjieun11 2020. 1. 22. 13:31
728x90

* 정규표현식이란?

 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.

 문자열을 처리할 때 특정 조건의 문자를 '검색' 하거나 '치환'하는 과정을 매우 간편하게 처리할 수 있다.

 

정규표현식 연습은 다음 사이트에서 진행해 볼 수 있다. 

https://regex101.com/

 

* 정규표현식 패턴

다음은 정규표현식의 패턴들을 정리한 것이다. 

 

 

 

 

 

* 정규표현식 연습

작성자 개인의 연습이므로 특정 주제에 대해 100%에 가까운 정답이라고 확신할 수는 없습니다. Test String의 문자 형식만을 고려하여 연습하였습니다.

 

1. 전화번호

01[016789]\D?\d{3,4}\D?\d{4}

01 : 아무런 기호가 없는 일반 문자열이므로 문자열의 시작이 01로 시작됨을 의미한다.

[016789] : [ ] 안에 있는 문자들을 모두 찾아주므로 01 다음에 오는 0, 1, 6, 7, 8, 9를 찾는다.

\D : \d는 digit 즉 0-9의 숫자를 의미하는데 대문자로 표기시 원래 의미를 제외한 나머지를 의미한다. 따라서 숫자를 제외하고 어떤 기호가 와도 연결 기호로 인식한다.

? : ?는 0개~ 1개가 존재함을 의미한다. \D뒤에 배치함으로서 \D를 한개만 인식하도록 한다. 

\d : digit, 0~9를 의미한다.

{3,4} : { }안의 범위로 수량을 제한한다. \d 뒤에 배치함으로서 최소 3개, 최대 4개의 digit문자를 읽을 수 있다.

 

 

2. 날짜

(20)?\d{2}\D?\d{2}\D?\d{2}\D?

(20)? : 2020년으로 표기하거나 뒤이 두 글자만 표시할 수 있기 때문에 앞의 두글자인 20을 그룹으로 묶어 0개부터 1개 있는것을 체크한다. 

\d{2} : 0-9의 digit가 2개 연속적으로 오는 것을 체크한다.

\D? : 0~9가아닌 것이 0개 혹은 1개있는 것을 체크한다.

 

3. Email

[\da-zA-Z]([-_.]?[\da-zA-Z])*@[\da-zA-Z]([-_.]?[\da-zA-Z])*

[\da-zA-Z] : 숫자(digit)이거나 영어소문자 a to z 이거나, 영어대문자 A to Z를 찾는다.

[-_.]? : [ ] 안에 있는 문자들중 하나를 찾는다. ?를 사용함으로서 1개만 인식한다.

@ : 아무런 기호가 없는 일반 문자열이므로 그냥 @ 자체로 인식하면 된다.

(  )* : 괄호로 그루핑 된 것들이 0개부터 여러개 존재하는 것을 체크한다.

 

[\da-zA-Z]([-_.]?[\da-zA-Z])* :  숫자,영어 대소문자로 시작하여 기호한개와 숫자영어대소문자 그룹이 계속 이어질 경우에 이렇게 작성할 수 있다.

 

배운 정규표현식을 갖고 웹 크롤링이나

회원가입 할 때와 같이 입력 규칙을 만들어 보면 좋은 실습이 될 것이다.

 

 

공부한 날짜 : 20.01.14 ~ 20.01.15

실습한 날짜 : 20.01.16

참고자료

- 생활코딩 정규표현식  https://opentutorials.org/course/909/5142  

- zvon tutorials http://zvon.org/comp/r/tut-Regexp.html#Pages~Contents