>  기사  >  백엔드 개발  >  중첩된 반복이 포함된 정규식

중첩된 반복이 포함된 정규식

王林
王林앞으로
2024-02-08 21:20:301164검색

중첩된 반복이 포함된 정규식

php 편집기 Xiaoxin은 이 기사에서 중첩 반복이 있는 정규 표현식을 소개합니다. 정규식은 문자열을 찾고, 바꾸고, 유효성을 검사하는 데 사용할 수 있는 강력한 문자열 일치 도구입니다. 중첩된 반복은 정규식에서 하나 이상의 반복 패턴을 사용하는 것을 의미하며, 이러한 반복 패턴은 다른 패턴에 중첩될 수 있습니다. 이 기술은 HTML 태그, 중첩된 대괄호 등과 같은 계층 구조와 텍스트를 일치시키는 데 사용할 수 있습니다. 중첩된 반복 정규식의 구문과 사용법을 이해함으로써 다양하고 복잡한 문자열 일치 요구 사항을 보다 유연하게 처리할 수 있습니다.

질문 내용

공백으로 구분된 최대 50개의 단어를 일치시키는 정규식을 go에서 만들려고 합니다. 여기서 각 단어는 1-32 "a"입니다. 저는 다음 정규 표현식을 사용하고 있습니다

으아악

다음과 같은 오류가 발생합니다

으아악

이렇게 최대 31번까지 반복할 수 있다는 걸 알아냈습니다

으아악

https://go.dev/play/p/rlnrox9-57_m

해결 방법

Go의 regexp 엔진에는 제한이 있습니다. 여기서 최상위 수준과 내부 반복의 조합은 가장 안쪽 반복의 1000개 복사본을 초과할 수 없습니다. 부분 . 이는 re2 문법 사양에 문서화되어 있습니다.

귀하의 경우 내부 32 * 외부 31 = 992이므로 최대 31개까지 작동합니다. 32 * 32 = 1024 및 32 * 50 = 1600은 해당 한도를 초과하면 작동하지 않습니다.

해결책은 표현식을 여러 부분으로 나누는 것입니다. ^(a{1,32}s?){1,31}(a{1,32}s?){0,19}$ p>

위 내용은 중첩된 반복이 포함된 정규식의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제