Node.js 정규식 게으른 매칭과 그리디 매칭 사용법 분석

高洛峰
풀어 주다: 2017-01-09 16:37:07
원래의
1385명이 탐색했습니다.

이 기사의 예에서는 js 정규 표현식의 게으른 일치와 탐욕스러운 일치의 사용법을 설명합니다. 참고로 모두와 공유합니다. 자세한 내용은 다음과 같습니다.

Greedy 모드와 Lazy 모드에 대해 이야기하기 전에 JS 규칙성의 기본 사항을 검토해 보겠습니다.

기본 작성:

①필요하지 않음 큰따옴표, 직접 사용 //contain => /wehfwue123123/.test();

②백슬래시는 이스케이프를 의미함 =>/.jpg$/

③기본 사용법: .test (str);

구문:

Ⅰ앵커 클래스

/^a/=>"a"로 시작

/. > ".jpg"로 끝남

②문자 클래스

[abc]: a 또는 b 또는 c

[0-9]: 숫자

[a-z]: 문자

: 모든 문자

3 메타 문자

^: []에서 없음을 나타내는 데 사용되며, []에서는

로 시작합니다.

d: [0-9]

s: 공백

w: [A-Za-z0-9_]

D: [^d]- 숫자가 아닌

S: 공백이 아닌 문자

④수량자

{m,n}: m ~ n 번

메타문자 표현:

*: {0,}

?: {0,1}

+: {1,}

난이도: 탐욕스러운 패턴/게으른 모드

Greedy 모드 - 일치가 성공하면 최대한 일치합니다.

Lazy 모드 - 일치가 성공하면 최대한 적게 일치합니다.

설명 1: 코드와 텍스트 모두.

정규 표현식에 욕심 많고 게으른 수량자를 사용하면 표현식 일치 프로세스를 제어할 수 있습니다. , *, + 의미는 해당 패턴의 발생 횟수를 지정할 수 있으며, 기본적으로 그리디 수량자를 사용합니다. 일치하지 않는 경우 마지막 문자열을 제거합니다. 그런 다음 일치하는지 확인하고 일치하거나 문자열이 비어 있을 때까지 다음과 같이 반복합니다.

vars ="abbbaabbbaaabbb1234";
varre1=/.*bbb/g;//*是贪婪量词
re1.test(s);
로그인 후 복사

이 일치 프로세스는 전체에서 시작됩니다. string:

re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续
re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续
re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续
re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续
re1.test("abbbaabbbaaabbb");//true ,结束
로그인 후 복사

탐욕적 수량자 뒤에 ?를 하나 더 추가하면 게으른 수량자가 됩니다. 일치 과정은 반대입니다. 일치하지 않으면 하나를 추가하고 위의 예를 사용하여 문자열 끝까지 반복합니다.

vars ="abbbaabbbaaabbb1234";
varre1=/.*?bbb/g;//*?是惰性量词
re1.test(s);
로그인 후 복사

매칭 과정은 다음과 같습니다.

re1.test("a");//false, 再加一个
re1.test("ab");//false, 再加一个
re1.test("abb");//false, 再加一个
re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始
re1.test("a");//false, 再加一个
re1.test("aa");//false, 再加一个
re1.test("aab");//false, 再加一个
re1.test("aabb");//false, 再加一个
re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始
로그인 후 복사

요약 :

기본 탐욕 매칭은 뒤에서 앞으로, 최대 매칭 길이이고, 게으른 매칭은 뒤에 수량자를 추가하는 것인가요? 매칭은 문자열의 앞부분부터 시작하며, 최소 길이만큼만 매칭됩니다

. 이 글이 자바스크립트 프로그래밍을 하시는 모든 분들께 도움이 되었으면 좋겠습니다.

더 많은 js 정규식 지연 매칭 및 탐욕 매칭 사용 분석 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


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