IT/개발지식

정규 표현식 빠르게 만들기

김솔샤르 2022. 10. 17. 23:34

정규 표현식 문법은 왜 그렇게 봐도봐도 헷갈리는지 쓸때마다 stackoverflow를 전전하다가 최근에 들어서 정규 표현식을 빠르게 뚝딱 만드는 절차(?)를 정립했다. 하지만 먼저 기본적인 문법 정도는 알고 있다는 전제가 필요하다. 그러니까 대충 email에 사용되는 표현식을 만든다고 했을때 정확하지 않더라도 검색없이 대충 작성해볼 정도는 되어야한다.

 

만약 기초가 아예 없다면 아래 문서를 빠르게 한번 훑자.

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.text.regularexpressions.regex?view=net-6.0 

 

Regex 클래스 (System.Text.RegularExpressions)

변경할 수 없는 정규식을 나타냅니다.

learn.microsoft.com

또는 https://regexr.com/ 에서 Cheetsheet 정도만 참조해도 많은 도움이 된다.

위에서 언급한 Email 형식을 정규 표현식으로 작성하는 예제를 든다면 아래와 같은 절차를 따른다.

 

1. 초안 작성

먼저 초안을 작성한다. 처음에 정규 표현식이 익숙하지 않으므로 정확하지 않거나 간결하게 작성하기 쉽지 않을 수도 있다. 그래도 되는대로 작성해본다. 예컨대 아래와 같이 초안이 나왔다고 하자.

 

[a-zA-Z]+@[a-zA-Z]+[.][a-zA-Z]+

 

2. 문법 체크

https://regexper.com/ 에서 내가 작성한 정규 표현식을 도식화하여 보여준다. 문법적으로 어디가 맞고 틀렸는지를 직관적으로 확인할 수 있다.

내가 작성한 초안은 위와 같이 도식화 되었다. 처음에 문자가 하나 이상 나오고 "@"가 들어가고.. 대충 흐름을 읽어보면 맞는것 같기는 하다. 근데 생각해보니 아이디에 숫자가 포함될 수도 있지 않나? -,_ 같은 특수 문자들도 들어갈 수 있어야하고 길이 제한도 들어가면 좋을 것 같다. 초안을 토대로 디버깅하듯이 식을 조금씩 고쳐가며 도식을 확인한다.

 

3. 테스트

최종적으로 ^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$ 라는 식이 완성되었다. 최종본이 완성된 것 같으면 테스트를 해본다. 나는 위에서 한번 언급한 https://regexr.com/ 을 선호한다. 말했듯 Cheetsheet도 제공하고 식에 마우스를 가져다대면 문법 정보를 제공하는 기능이 좋다.

여기 말고도 Regex test라고 검색해보면 정규 표현식을 테스트해볼 수 있는 사이트가 무수히 많으니 취향껏 골라잡자. 아무튼 테스트하고 싶은 텍스트를 입력해서 테스트를 해보자. 아래와 같이 작성한 정규 표현식에 매치되지 않으면 실패하게 된다. (아이디에 약속되지 않은 특수 문자가 들어갔다) 

 

 

이제 정규 표현식이 제대로 완성된 것 같으니 복사 붙여넣기해서 적용하면 된다.

반응형