이전 정규표현식의 활용 편에서 적었던 글의 연장선상으로
좀더 활용적인 정규 표현식을 적어본다.
알고리즘 (프로그래머스) 1lv을 거의 완료한 시점에서 느끼는 점은 결국
어떠한 입력값 (xx던 xxx던)이 주어지면 이러한 배열값을들 정렬 , 처리 , 가공해서
내가 원하는 자료화 한 다음 그 자료들을 for if 등의 반복문과 조건문을 통해
가공하며 이것들을 효율적으로 빠르게 처리하는게 관건이라 생각되었다.
그중 정규표현식은 이러한 자료처리의 꽃으로 20~30줄의 코드를
한줄로 줄이는 것이 가능할 정도로 잠재력이 있다
이러한 정규표현식 중 보면서 언젠가 활용할 거 같거나
유용하다고 생각된 몇가지를 추가적으로 정리했다.
먼저 들어가기 전에 유용한 사이트
적은 정규표현식을 가시화해서 좀더 알기 쉽게 만들어준다.
예를 들어 프로그래머스의 입력값들을 가져와 TXT에 집어넣은 후
정규표현식을 짜나가면 좀더 오류인지 맞는지를 찾기 편리해진다.
.match 와 함께하는 정규표현식
const dartResult = "1S*2T*3D*2T*10T*10S10T*";
const reg = /[\d]+[SDT][*#]*/g;
const input = dartResult.match(reg);
// 참고문제 = https://programmers.co.kr/learn/courses/30/lessons/17682#
[
'1S*', '2T*',
'3D*', '2T*',
'10T*', '10S',
'10T*'
]
우선 위의 match와 정규표현식을 활용한 예제를 살펴보자
reg를 바로 match 안에 넣어도 된다.
(https://programmers.co.kr/learn/courses/30/lessons/17682#)
[\d] : 첫시작은 어떠한 숫자 , 2연속의 숫자가 있음으로 + (혹은 *도 가능하다)
[SDT] : S 혹은 D 혹은 T가 그 이후에 무조건 들어간다.
[*#] : SDT 다음에 * 또는 #이 들어간다.
마지막의 *과 #은 없을수도 있음으로 마지막에 예외 처리 (* 혹은 ?) 한다.
이러한 사이트를 활용하여 기본적인 구조골격을 만들고 예시를 집어넣은 다음
몇몇까지 사항을 추가하는 식으로 구조를 짤 수 있다.
.match 와 .replace에 대하여
이전편에서 다뤘지만
.replace의 경우 중복문자 , 혹은 가공되지 않은 문자열을 가공된 상태로 만드는데 적합하다.
예를 들어 숫자 이외를 지우던 문자 이외를 지우던..
반면 .match의 경우 특정 문자열 혹은 특정 단어조합을 중심으로
split과 같은 효과로 사용 가능하다.
배열을 만들 수 있다는건 이러한 자료를 매우 쉽게 활용가능하고
불필요한 반복문이나 map 등을 최소화 시킬 수 있다.
'IT 학습 > Algorithums' 카테고리의 다른 글
[엘리스 SW 3기] 코테전 입,출력 방식 정리 (0) | 2022.08.21 |
---|---|
프로그래머스 - 숫자 문자열과 영단어 [split , join] (0) | 2022.04.19 |
프로그래머스 - 신규 아이디 추천 [정규 표현식 , replace] (0) | 2022.04.17 |
프로그래머스 - 기능개발 [스택/큐_lv2] (0) | 2022.04.10 |
프로그래머스 - 위장 [해시_lv2] (0) | 2022.04.10 |