> 백엔드 개발 > PHP 튜토리얼 > 정규식 지연 일치 패턴(?)

정규식 지연 일치 패턴(?)

高洛峰
풀어 주다: 2023-03-04 17:36:01
원래의
2193명이 탐색했습니다.

정규 표현 게으른 매칭 모드:
욕심 매칭 모드 장에서 인간의 본성은 더 많은 돈, 지위, 심지어 아름다운 여성까지 얻기를 바라는 욕심이 많다고 했지만, 그렇지 않은 사람들도 많습니다. 금욕적인, 기본적인 생활 욕구만 충족되면 정규 표현식에도 이러한 일치 원칙이 있습니다.

1. 게으른 모드의 개념:

이 모드는 정규 표현식을 만족시키기 위해 가능한 한 적은 수의 문자와 일치합니다.

var str="axxyyzbdkb";
console.log(str.match(/a.*b/));
로그인 후 복사

위 코드는 Greedy 모드이므로 전체 문자열을 일치시킬 수 있습니다. 게으른 일치 모드로 수정해 보겠습니다.

var str="axxyyzbdkb";
console.log(str.match(/a.*?b/));
로그인 후 복사

위 코드는 게으른 매칭 방식으로, 반복 수량자 뒤에 물음표(?)를 추가하는 방식입니다.
지연 일치 모드는 가능한 한 적은 수의 문자를 일치시키는 것이지만 정규식의 일치 규칙을 충족해야 합니다. 예를 들어 위 코드에서 *는 0개 이상의 이전 문자 또는 하위 표현식과 반복적으로 일치할 수 있지만 정규식은 끝납니다. 공식은 b여야 하므로 정규식은 위 문자열의 axxyyzb와 일치할 수 있습니다.

요약은 다음과 같습니다.

1. 반복 수량사 뒤에 물음표(?)를 추가하여 지연 일치를 형성합니다.
2. 지연 매칭은 가능한 적은 수의 문자와 일치하지만 전체 일치 패턴이 만족되어야 합니다.

2. 게으른 한정자 목록:

정규식 지연 일치 패턴(?)

다음은 제 소개입니다

사실 탐욕과 게으름은 이해하기 쉽습니다. 말 그대로 의미를 알 수 있습니다. 소위 "탐욕"은 요구 사항을 충족하면 일치하지 않을 때까지 계속 일치한다는 의미입니다. 이것이 탐욕 모드입니다. 소위 게으른 모드는 일단 적합한 일치가 발견되면 종료되고 더 이상 일치가 계속되지 않음을 의미합니다. 아래에서는 이를 주로 설명하기 위해 몇 가지 예를 소개하겠습니다.

먼저 그리디 모드의 식별자에 대해 이야기해 보겠습니다. +,? ,*,{n},{n,},{n,m}. 지연 모드: +? ,? ? ,*? ? ,{n}?,{n,}?,{n,m}?;

예시 1

var pattern=/8[a-zA-Z0-9]*7/;贪婪模式
var string="abc8defghij7klngon8qrstwxy7";
로그인 후 복사

이때 time 욕심 모드 *가 사용됩니다. 이는 8에서 8 사이의 문자 수에 제한이 없음을 의미합니다. 그런 다음 이 일반 규칙은 처음 8부터 먼저 일치하면 다음 내용과 제한 없이 일치합니다. 다음 내용이 [a-zA-Z0-9]를 만족하므로 가능합니다. 더 이상 일치하지 않을 때까지 계속 매칭하고, 다음이 7인지 확인하고, 그렇지 않으면 하나 앞으로 이동하고(하나를 뱉어 7인지 확인), 그렇지 않으면 7이 뱉어질 때까지 계속해서 뱉어내고, 그 다음 일치하는 것은 그 사이의 내용입니다. 따라서 일치하는 내용은 전체 문자열입니다.

var pattern=/8[a-zA-Z0-9]*?7/ig;惰性模式
var string="abc8defghij7klngon8qrstwxy7";
로그인 후 복사

위 정규식은 게으른 모드 *?를 사용하며, 매칭 방법은 이렇게 8을 먼저 매칭한 뒤 문자를 매칭한다. 이후 [a-zA-Z0-9]와 일치하는지 확인하고, 일치하면 다음 문자가 7인지 확인하고, 그렇지 않으면 다음 문자를 일치시켜 일치하는지 확인합니다. [a-zA-Z0-9], 일치하면 다음 문자가 7인지 확인하고, 그렇지 않으면 일치할 때까지 위의 방법에 따라 반복합니다.

(2) 욕심 많고 게으른 패턴은 다른 방식으로 표현될 수도 있습니다.

예제 2

var test="<img  src="aaa/111.jpg"/ alt="정규식 지연 일치 패턴(?)" ><img  src="aaa/112.jpg"/ alt="정규식 지연 일치 패턴(?)" ><img  src="aaa/113.jpg"/ alt="정규식 지연 일치 패턴(?)" >";
var pattern=/<img  [^ alt="정규식 지연 일치 패턴(?)" >]*\/>/ig;
로그인 후 복사

이런 식으로 지연 모드도 구현할 수 있는데, [^>] 이는 < ;img to >는 /> 사이에 나타날 수 없으므로 각 정규식 지연 일치 패턴(?) 태그에 대한 결과를 찾을 수 있습니다.

정규표현식 지연 매칭 패턴(?)에 대한 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿