정규식 사용하기 (1)

Dalbi·2021년 4월 5일
1
post-thumbnail

정규식이란?

정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이라고 한다. 이를 활용하여 문자열에서 원하는 패턴의 문자를 찾거나 패턴에 맞는 양식인지 확인 할 수 있다.

사용하기

Django를 활용한 프로젝트를 진행하는중, 이메일양식에 맞춰 작성하였는지 확인하는 작업이 필요했다. 정규식을 활용하기로 했다.

'^[a-zA-z0-9-_.]+@+[a-zA-z0-9.]+.+\w+$' 이부분을 앞부분부터 확인해보자.

  • ^ : 정규식의 시작을 나타낸다.
  • [a-zA-z0-9-_.] : 대괄호([ ])안에 들어간 부분이 문자열에 해당되는 부분이다.
  • a-z, A-Z, 0-9, -. : 문자 a부터 z까지, A부터 Z까지, 0부터 9까지 그리고 특수문자 - . 세가지를 허용한다는 의미이다.
  • + : 다음 문자열 규칙을 붙여준다.
  • @ : @를 문자열에 포함시킨다.
  • \. : DOT(.)의 경우 대괄호 밖에서는 기능이 있는 특수문자이기 때문에 \를 통해 기능없이 특수문자로서 포함시킨다.
  • \w : [a-zA-Z0-9]과 같은 의미이다. word의 w이다.
  • $ : 정규식의 끝을 나타낸다.

이를 글로 풀어 쓰자면 '문자열과 세가지(-_.) 특수문자로 시작하고 중간에 @를 포함한뒤 문자열과 DOT(.)을 포함한뒤 DOT(.)이 온뒤 문자열이 오는 문자열'이라는 의미가 된다.

이처럼 암호처럼 보이는 정규식을 통해 복잡한 규칙을 간단하게 표현하는것이 가능하다.

CheatSeat

https://regexr.com/

이곳을 통해 직접 입력하고 사용이 가능하다.

Character classes

Chracter
.새로운 문장을 제외한 모든 문자
\w \d \s글자, 숫자, 공백을 의미
\W \D \S글자, 숫자, 공백이 아닌것을 의미
[abc]a 또는 b 또는 c
[^abc]a 또는 b 또는 c가 아닌 것
[a-g]a부터 g까지 해당되는 문자

Anchors

Chracter
^abc$문자열의 시작(^)과 끝($)
\b \B문자열의 끝이 해당문자
she sells seashells

만약 \bsh라고 작성하였다면 위의 문장에서 she의 sh(sh로 시작하기 때문)만 해당되고 ls\b라고 작성하였다면 sells와 seashells의 ls(ls로 끝나기 때문)가 해당된다.

만약 \Bs라고 작성하였다면 위의 문장에서 단어의 시작하는 s를 제외한 모든 s(sells, seashells)가 해당되고 s\B라고 작성하였다면 단어의 끝나는 s를 제외한 모든 s(she, sells, seashells)가 해당된다.

Escaped characters

Chracter
\. \* \\ 기능이 아닌 특수문자로 사용
\t \n \rtab, linefeed, carriage return
profile
백엔드..?

0개의 댓글