정규 표현식과 겹치는 문자열 일치
문자열 일치를 위해 전역 플래그(/g)와 함께 정규 표현식을 사용할 때 다음이 가능합니다. 겹치는 일치 항목이 예상대로 반환되지 않는 경우가 발생합니다. 예를 들어 문자열 "12345"에서 /d{3}/g를 사용하여 일치하면 ["123", "234", "345"] 대신 "123"만 일치합니다.
이유 이 동작은 전역 플래그와 정규식 일치의 특성에 있기 때문입니다. 정규식 엔진은 일치하는 하위 문자열을 읽고 사용하여 해당 인덱스를 일치 항목 바로 다음 위치로 이동합니다. 이 경우 "123"을 매칭한 후 인덱스는 4위로 이동하고 후속 매칭에서는 "45"만 남깁니다.
중복 매칭 기술
일치 항목이 겹치는 경우 여러 가지 접근 방식이 가능합니다. 채용됨:
Zero-Width Assertions:
예(JavaScript에서는 matchAll 사용) :
const re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
이 코드는 긍정적인 예측을 사용하여 테스트합니다. 세 개의 연속 숫자와 일치하는 문자열의 모든 위치에 대해. 결과는 ["123", "234", "345"]를 포함하여 일치하는 하위 문자열의 배열입니다.
추가 고려 사항:
위 내용은 정규식 및 글로벌 플래그와 중복되는 일치 항목을 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!