정규표현식을 쉽게 생성하는 방법

jaybon·2022년 10월 10일
0

개발잡담

목록 보기
5/19

정규표현식이란

프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어

어떠한 문자열을 검증하고 싶은데, 고정된 데이터가 들어오는 것이 아니라 패턴이 있는 데이터일 경우에 사용한다.

Regex 또는 Regexp 등으로 쓴다.

def use_regex(input_text):
    pattern = re.compile(r"^[0-9]{3}-[0-9]{4}-[0-9]{4}$", re.IGNORECASE)
    return pattern.match(input_text)

위와 같이 유저가 입력한 데이터를 검증하는 용도로 많이 사용한다.

정규표현식이 필요한 간단한 예

  • 휴대폰 번호 형식
  • 이메일 형식
  • 비밀번호 형식

정규표현식을 따로 공부해야하나?

공부해서 나쁠 것은 없다.
잘 알고 있다면 문자열 검증의 고수가 될 수도 있을 것이다.
하지만 우리에겐 시간이 부족하다.

선배님들이 구축해놓은 사이트들을 이용해보자.

정규표현식을 쉽게 생성해주는 사이트

Regex Generator

https://regex-generator.olafneumann.org/

1. Paste a text sample 칸에 원하는 텍스트를 입력한다

1단계에 내가 패턴화 시키고 싶은 문자열 중 하나를 입력한다.

2. 패턴을 찾는다

2단계를 보면 위와 같이 알록달록하게 색깔을 보여준다.

  • 첫번째 줄처럼 개별 문자마다 패턴 설정도 가능하다.
  • 두번째 줄처럼 Email 등 국제적으로 통용되는 패턴이 있다면 적용 할 수 있다.
  • 세번째 줄처럼 test / @ / example / . / com 등으로 어떤 문자열로도 구분이 가능하다.

이 포스팅에서는 두번째 빨간 줄에 마우스를 올려 Email 관련 표현식을 선택하였다.

선택을 했다가 취소하고 싶으면 마우스를 다시 올려 클릭을 하면 해제된다.

3. 설정을 완료하고 복사한다

3단계를 보면 몇가지 옵션이 있다.

  • Generate only pattern -> 해당 문자열 전체를 패턴으로만 생성한다. 체크를 해제하면 회색으로 만들지 않은 문자열은 그대로 가져온다.
  • Match whole line -> 내가 입력한 모든 문자열이 매칭이 되도록 정규표현식을 세팅한다.

눌러보면서 원하는 결과값을 선택하자.
Copy regex 를 이용하여 정규표현식을 사용하면 된다.

4. 원하는 언어로 가져가자

다양한 언어의 정규표현식 사용방법을 제공해준다.

Regex Generator 추가사항

위와 같이 전화번호도 추가할 수 있다.
하지만 완성된 정규표현식을 사용해 보면,
제대로 작동하지 않는 것을 깨닳을 것이다.

[0-9]라는 표현은 0~9까지의 해당위치에 숫자만 입력가능하다는 뜻이고 +라는 표현은 개수제한이 없다는 뜻이다.
하지만 국내 휴대폰 전화번호는 3자리-4자리-4자리의 패턴이 있다.
이 부분을 다음 사이트에서 수정해보자.

regular expressions 101

https://regex101.com/

1. 정규표현식 입력

REGULAR EXPRESSION에 Regex Generator에서 만든 정규표현식을 입력하자

  • 내가 원하는 언어를 선택
  • 정규표현식 입력
  • 테스트해볼 문자열 입력

2. 정규표현식 검증

국내 휴대폰 전화번호는 3자리-4자리-4자리의 패턴인데 숫자가 적든 많든 모두 파랗게 매칭이 된다고 결과가 나온다.
수정을 해야할 것 같다.

3. 정규표현식 확인

수정을 하기 전에 오른쪽 아래를 보자.
QUICK REFERENCE를 보면
왼쪽에는 정규표현식의 종류를 구분해놓았고
오른쪽에는 설명과 작성방법을 보여주고 있다.

클릭하면 위와 같이 예시까지 보여준다.

문자 뒤에 +가 붙으면 하나 이상의 모든 개수를 허용하는 것이고
문자 뒤에 {3}이 붙으면 딱 3개만 가능하다는 뜻이다.
문자 뒤에 {3,}이 붙으면 3개 이상의 모든 개수 허용,
문자 뒤에 {3,6}이 붙으면 3~6개의 문자를 허용한다는 뜻이다.

4. 정규표현식 수정

+로 되어 있던 부분을 각각 {3} / {4} / {4}로 수정해보자.

이제 정확히 패턴을 검증하고 있다.

profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글