정규표현식을 이용하여 문자열 처리하기

YeongMin·2022년 5월 12일
0

정규표현식

목록 보기
1/1

1. 어쩌다가 정규표현식에 관심을❓

프로그래머스의 신규 아이디 추천(카카오) 문제의 접하게 되었다.
처음에는 문제에서 제시한 단계를 수행하는 함수를 생성한 다음 호출하여 결과값을 return 받게 로직을 작성했다.

그러나 단계가 7단계가 주어지는 만큼 함수 또한 7개였으며 코드의 전체 길이도 수십줄에 달했다.

작성하는데 걸린 시간은 30분 내외! 그러나 이 문제는 가장 쉬운 LV1 문제 였다..
문제자체는 어렵지 않았으나 반복문과 함수를 생성하여 푸는 풀이로는 꽤 많은 시간이 소모되었다.

그렇게 로직을 다 작성하고 제출을 누른 후 "후.. 잘 작성했다!" 라는 생각을 하며
다른 사람의 풀이 버튼을 클릭한 순간!?

공감을 가장 많이 받은 2가지의 풀이의 코드 길이는 10줄 내외...

바로 정규표현식을 이용하여 문제를 해결하였기 때문이다.

40줄 내외의 코드를 작성한 필자는 꽤나 큰 충격을 받고 해당 문제에서 사용한 정규표현식에
대해서 간략하게 나마 정리해 보려고 한다.😔


2. 정규표현식이란?

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기위한 패턴이다. 자바스크립트에서는
이또한 객체이기 때문에 자기만의 메서드를 가지고 있다.

2.1. 정규표현식 만들기

리터럴 방식 : 스크립트를 불러올 때 컴파일 됨으로 변경될 일 없을 경우 사용

const reqExp = /abc/;

ReqExp 생성자 호출방식 : 런타임 환경에서 컴파일됨으로 바뀔 수 있는 패턴에 사용

cosnt reqExp = new ReqExp('abc')
  • 런타임환경(Run time) : 컴파일이 완료된 후 실행시점의 환경
  • 컴파일타임(Compile time) : 개발자가 작성한 코드가 컴퓨터가 해석할 수 있는 기계어로 번역되는 타임

3. 정규표현식 각종 패턴

3.1. 매칭패턴

제목 셀1제목 셀2
a-zA-Z영문자 (-으로 범위 지정)
0-9숫자 (-으로 범위 지정)
ㄱ-ㅎ가-힣한글 문자 (-으로 범위 지정)
.모든 문자
\d숫자
\w영문자 + 숫자 즉 a-zA-Z0-9 와 동일
\W\w 가 아닌 것
\특수문자특수문자를 쓸때는 앞에 \을 붙인다. ex) \.
\s공백 (space)

3.2. 검색패턴

제목 셀1제목 셀2
|OR ex) a|b
[]괄호안의 문자들 중 하나, 각각의 문자열사이에 | 이 있다고 생각 ex) [a-z]
[^문자]괄호안의 문자를 제외한 것 ex)[^abcd] "a", "b", "c", "d"를 제외

3.3. 갯수(수량)반복 패턴

제목 셀1제목 셀2
*없거나 or 있거나
+최소 한개 or 여러개 ex) /\.+/g

4 적용해보기

4.1. replace와 함께 사용

let string = "...$Ahn0min@...";
let emptyString = "";

// 문자열 앞의 한개 이상의 마침표(.)를 찾아 빈 문자열('')로 변경
string.replace(/^\.+/g, '') // $Ahn0min@...

// 라인 뒤의 마침표(.)를 한개 이상의 문자를 찾아 빈 문자열('')로 변경
string.replace(/\.+$/g, '') // ...$Ahn0min@

// 그룹 내부의 문자가 아닌([^문자들]) 문자를 찾아 빈 문자열로('')로 변경
string.replace(/[^\w\.-_]/, '') // ...Ahn0min...

// 빈 문자열을 'ahn0min'으로 변경 
// 이녀석 꿀팁이었다..
emptyString.replace(/^$/g, "ahn0min")

Reference

profile
Front-End 안영민

0개의 댓글