Regex를 사용한 겹치는 문자열 일치 이해
특정 시나리오에서는 전역 플래그가 있는 string#match 메서드가 입력 문자열. 예를 들어 문자열 "12345"를 생각해 보세요. 정규식 /d{3}/g를 사용하면 ["123", "234", "345"]의 세 가지 일치 항목을 얻을 것으로 예상됩니다. 그러나 "123"이라는 단일 일치 항목만 얻습니다.
이는 string#match 메서드가 일치하는 문자를 소비(즉, 인덱스를 지나서 읽고 앞으로 이동)하기 때문입니다. 따라서 "123"을 일치시킨 후 현재 인덱스는 '4'를 가리키고 정규식 엔진이 중지되어 더 이상 일치하는 항목을 찾을 수 없습니다.
0 너비 어설션으로 겹치는 일치 항목 해결
이러한 제한을 해결하기 위해 널리 사용되는 기술은 캡처 그룹과 함께 긍정적인 예측 어설션을 사용하는 것입니다. 이 접근 방식은 실제로 하위 문자열을 사용하지 않고 하위 문자열의 존재를 확인합니다. 입력 문자열의 모든 위치를 반복적으로 테스트하여 원하는 중복 일치 항목을 캡처할 수 있습니다.
var re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]);
이 예에서는 연속된 3자리 숫자를 사용하지 않고 캡처하는 긍정적 예측 어설션이 포함된 정규식을 만듭니다. matchAll을 사용하여 입력 문자열을 반복함으로써 원하는 일치 항목 목록(["123", "234", "345"])을 얻습니다.
이 기술은 다양한 프로그래밍 언어에서 지원되므로 개발자가 이를 처리할 수 있습니다. 문자열 일치 시나리오를 쉽게 중첩할 수 있습니다.
위 내용은 정규식을 사용하여 문자열에서 겹치는 일치 항목을 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!