JavaScript Regex에서 임의 그룹 캡처
정규 표현식을 사용하여 그룹을 캡처할 때는 특정 패턴에 따른 제한 사항을 이해하는 것이 중요합니다. 반복 캡처 그룹을 사용하여 여러 항목을 일치시킬 수 있지만 JavaScript에서는 마지막 캡처만 유지됩니다.
다음 예를 고려하세요.
"foo bar baz".match(/^(\s*\w+)+$/)
이 패턴에서 캡처 그룹(s *w )는 수량자를 사용하여 반복됩니다. 그러나 JavaScript의 정규식 엔진은 중간 일치 항목이 아닌 마지막 항목만 캡처합니다. 결과적으로 출력은 다음과 같습니다.
["foo bar baz", " baz"]
캡처된 모든 일치 항목을 검색하려면 다음 전략을 고려하십시오.
구분 기호로 분할:
가능한 경우, 복잡한 정규 표현식을 사용하는 대신 사전 정의된 구분 기호로 문자열을 분할합니다.
반복 그룹이 있는 Exec 루프:
반복 그룹을 캡처하는 패턴을 만든 다음 exec 루프를 사용하여 일치 항목을 반복합니다. 전체 그룹이 캡처되면 내부 구분 기호로 분할합니다.
다단계 매칭:
반복되는 그룹을 하나의 패턴으로 캡처한 후 다음을 사용하여 문제를 여러 단계로 세분화합니다. 개별 일치 항목을 추출하는 후속 패턴입니다.
예:
/<(\w+(;\w+)*)>/g
이 패턴은 그룹 1의 전체 반복 그룹을 캡처합니다. 그런 다음 exec 루프에서 ; 구분 기호.
var text = "a;b;;g;h;i; ;j;k; "; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { console.log(match[1].split(";")); }
출력:
["c", "d", "e", "f"] ["xx", "yy", "zz"]
위 내용은 JavaScript Regex에서 그룹의 여러 발생을 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!