JavaScript에서 연속된 동일한 문자가 끝나고 새로운 값으로 변경되는 지점을 기준으로 문자열을 분할하고 싶다면, match() 메서드와 정규 표현식을 함께 사용하면 됩니다.
핵심 아이디어: 정규 표현식 이해하기
여기서 사용하는 정규 표현식은 다음과 같습니다.
/(.)\1*/g
이 패턴의 구성 요소를 살펴보면 다음과 같습니다.
- (.) — 임의의 한 문자를 캡처 그룹으로 지정합니다.
- \1* — 앞에서 캡처한 문자와 동일한 문자가 0번 이상 반복되는 부분을 매칭합니다.
- g 플래그 — 문자열 전체에서 일치하는 모든 부분을 찾습니다.
즉, 이 패턴은 "같은 문자가 연속으로 이어지는 덩어리" 단위로 문자열을 잘라냅니다.
예제 코드
var originalString = "JJJJOHHHHNNNSSSMMMIIITTTTHHH";
var regularExpression = /(.)\1*/g;
console.log("원본 문자열=" + originalString);
var splitting = originalString.match(regularExpression);
console.log("분할 후 결과=");
console.log(splitting);프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node 파일이름.js
예를 들어, 파일 이름이 demo139.js라면 아래와 같이 실행합니다.
node demo139.js
실행 결과
프로그램을 실행하면 다음과 같은 출력을 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo139.js 원본 문자열=JJJJOHHHHNNNSSSMMMIIITTTTHHH 분할 후 결과=[ 'JJJJ', 'O', 'HHHH', 'NNN', 'SSS', 'MMM', 'III', 'TTTT', 'HHH' ]
결과 해석
출력 결과를 보면 원본 문자열 "JJJJOHHHHNNNSSSMMMIIITTTTHHH"가 값이 변경되는 지점마다 분할되어 ['JJJJ', 'O', 'HHHH', 'NNN', 'SSS', 'MMM', 'III', 'TTTT', 'HHH'] 배열로 반환된 것을 확인할 수 있습니다. J가 4개인 구간, O 하나, H가 4개인 구간처럼 동일한 문자가 연속되는 단위별로 깔끔하게 나뉩니다.
이처럼 match()와 캡처 그룹 역참조(\1)를 활용하면 별도의 반복문 없이 간단한 한 줄의 코드로 값 변경 시점 기준 문자열 분할을 손쉽게 처리할 수 있습니다.