220531 TIL - [JS] 괄호 안의 문자열 여러개 추출하기

Dzeko·2022년 5월 31일
0

개발일지

목록 보기
91/112
post-thumbnail

Today I Learned

이거 알아보려고 구글링하다가 어떤 블로그를 들어갔는데 내가 예전에 쓴 내 블로그였다. 너무 웃겼다ㅋㅋㅋㅋㅋ
그 글이 왜 최상단에 떠있는지 모르겠다. 엄청 대충 적었는데,,, 조회수도 엄청 많았다. 참 신기했다.

아무튼 간에 제안받은 회사의 알고리즘 문제를 풀다가

const str = 'sdfe wefwef sdfsdf [werwe, erter], sdfsdfwe [sdfsdf] sddolgndf [werh8]'

이런 문자열에서 [ ]사이의 문자열을 추출해야 하는 상황이 있었다. 결국 이 방법을 쓰지 않고 풀었지만,
나름대로 정규식 공부도 되고 도움이 되었다.


처음에는 정규식을

'\[(.*?)\]'

이렇게 썼었는데 그렇게 되면 다음과 같이 처음 여는 대괄호와 마지막의 닫는 대괄호 안의 문자열을 통채로 가져왔다.

result = '[werwe, erter], sdfsdfwe [sdfsdf] sddolgndf [werh8]'



내가 원하는 것은 [ ]사이의 모든 문자열을 가져와야 했으므로

const result = Array.from(str.matchAll('\\[(.*?)\\]'), match => `${match[0]}`);

이렇게 해줘야 했다.




정규식 문자

\

백슬래시 : 문자열에서의 백슬래시와 똑같이, 자신의 바로 뒤에 오는 특정 기능을 하는 무언가를 아무기능도 하지 않는 일반 문자로 만들어 준다.

^

문자열의 첫부분인지 검사한다.

$

문자열의 마지막 부분인지 검사한다.

*

앞에 오는 문자가 0회 이상 반복되는지 검사한다.

+

앞에 오는 문자가 1번 이상 반복되는지 검사한다. * 과 다르게 무조건 한 번 이상 와야한다.

?

앞에 오는 문자가 0번 or 1번 반복되는지 검사한다.

.

개행문자 \n 을 제외한 모든 문자열 중 하나에 일치하는지 검사한다.

profile
Hound on the Code

0개의 댓글