22.11.22_ TIL_알고리즘모의_replace()_정규식

YES31·2022년 11월 22일

TIL

목록 보기
3/35
post-thumbnail

알고리즘 문제를 풀어가다 보니 replace() 와 정규식을 활용해 풀면 편한 문제를 만났다. 구글링과 MDN, velog 그리고 같이 공부를 하는 팀원의 공유로 어느정도 이해를 하게되어 이렇게 글을 쓴다. 정규식에 대한 예시는 replace()를 활용한다.


정규식

replace(/[asdf]/e, ~)

replace(/[^\w_.-]/g, "") 
        ~~~~~~~~~~~

먼저 ( ) 안에 정규식으로 원하는 값을 내도록 범위나 특정 조건을 걸어 활용할 수 있다.
"abbabbabb".replace(a, b)는 문자열에 a를 b로 치환하는 것이다.
/[asdf]/e에서 [asdf]는 문자열 조건에 해당하며, e의 내용은 옵션에 해당한다. 예를 들어 i는 대소문자의 구별없이 진행, g 문자열 전역으로 검색 등등이 있는데.. 처음 MDN에서 이런 설명만 보니 이해하기 너무 오래 걸렸다.. 정규식을 공부하는 개발자중 나처럼 시간 쏟는 일은 없길 바라며...

🎫 SAMPLE

.replace(/[^\w_.-]/g, "") 
//제외(^), 숫자 및 알파벳(\w),  _.- 를 문자열 전체에서(g), 빈 문자열로 치환("")
// 문자열에서 [^\w_.-]에 해당하는 값 외외의 값은 제거

.replace(/[.]{2,}/g, ".") 
// 점(.) 두개 이상({2,}) 전부(g) 하나로 교체
                 ~~~~~ // {2, } 내부에 (,) 가 붙어야 {2개이상, ~개 이하} 

.replace(/[.]{2}/g, ".") //라면 점(.)이 2개 일때 1개로 치환이다. 

.replace(/^[.]+/, "")
// 시작(^)에 점(.) 하나이상(+) 제거

.replace(/[.]+$/, "")
// 끝($)에 점 하나 이상 제거

.replace(/^$/, "a")
// 처음(^) 부터 끝($) 까지 아무것도 없다면 "a"로 교체

.replace(/[.]+$/, "")
// 끝에 점 제거 
?
.replace(/[b(a|e|i)d]/, "")
// b로 시작해서 d로 끝나며 중간에 a 또는 e 또는 i 를 포함한 문자열 찾기.
// bad , bed, bid 를 문자열에서 찾아 빈 문자열로 치환한다.

SAMPLE를 통해 구조가 어느정도 이해된다면, https://regexr.com/ 를 보는 것도 추천한다!

profile
🏀 주니어 개발자

0개의 댓글