정규식과 str.matchAll() 메서드

boyeonJ·2023년 8월 22일
0

JavaScript ETC

목록 보기
11/14
post-thumbnail

1. 정규식(Regular Expression)

정규식은 문자열에서 특정 패턴을 찾거나 검색하기 위해 사용되는 표현식입니다. 문자열을 다루는데 매우 강력한 도구로, 특정 패턴을 일치시키기 위한 규칙을 정의하는 데 사용됩니다. JavaScript에서는 정규식을 표현하기 위해 /패턴/플래그 형태의 리터럴 표기법을 사용합니다.

예를 들어, /(\d+)([SDT])([*#]?)/g는 세 부분으로 나뉘어지며, (\d+), ([SDT]), ([*#]?)은 각각 서로 다른 패턴을 나타냅니다.

  • (\d+): 한 개 이상의 숫자를 의미하는 패턴. ()는 그룹을 나타내며, \d+는 숫자가 하나 이상 반복되는 패턴을 의미합니다.
  • ([SDT]): S, D, T 문자 중 하나를 의미하는 패턴. [SDT]는 S, D, T 중 하나의 문자가 나타나는 패턴을 의미합니다.
  • ([*#]?): 또는 # 문자가 0 또는 1번 나타나는 패턴. `[#]?`는 * 또는 # 문자가 0 또는 1번 나타나는 패턴을 의미합니다.

2. str.matchAll() 메서드

matchAll() 메서드는 정규식에 따라 문자열에서 일치하는 모든 결과를 반복 가능한(iterable) 객체로 반환합니다. 각 일치 결과는 이터레이터(iterator)를 통해 접근할 수 있습니다. 이터레이터를 통해 반환된 각 결과는 그룹화된 일치 항목을 포함하며, match 객체 형태로 제공됩니다.

이제 주어진 코드에 대해 설명드리겠습니다.

const regex = /(\d+)([SDT])([*#]?)/g;
const matches = [...dartResult.matchAll(regex)];
return matches.map(match => ({
    score: parseInt(match[1]),
    bonus: match[2],
    option: match[3]
}));

이 코드는 입력 문자열인 dartResult를 정규식 regex를 사용하여 토큰화하여 각각의 기회에 대한 점수, 보너스, 옵션을 추출합니다. 코드의 각 부분은 다음과 같은 역할을 수행합니다:

  • regex: 위에서 설명한 정규식 패턴을 나타냅니다.
  • matches: dartResult에서 정규식 regex에 따라 일치하는 모든 결과를 배열로 저장합니다.
  • matches.map(...): 각 일치 항목을 순회하며, 일치 결과를 파싱하여 점수, 보너스, 옵션 정보를 객체 형태로 변환하여 반환합니다.

이렇게 함으로써 입력 문자열을 토큰화하고, 각각의 토큰에 대한 점수, 보너스, 옵션 정보를 추출하게 됩니다.

도움이 되는 사이트

연습 사이트

0개의 댓글