JS 정규 표현 식 + --- 탐욕 과 비 탐욕 모델 학습 총화
2892 단어 자바 script
우선 이전 js 코드:
try{
str="<p>abcdefg</p><p>abcdefghijkl</p>";
re1=str.match(/<p>[\W\w]+?<\/p>/ig);
alert(" :\r
\r
1:"+re1[0]+"\r
2:"+re1[1]);
re1=str.match(/<p>[\W\w]+<\/p>/ig);
alert(" :\r
\r
"+re1);
re1=str.match(/<p>(.+?)<\/p>/i);
alert(" , :\r
\r
1:"+re1[1]);
re1=str.match(/<p>(.+)<\/p>/i);
alert(" , :\r
\r
"+re1[1]);
}catch(e){
alert(e.description)
}
다음 에 예 를 들 어 보 겠 습 니 다.
탐욕 모드:
일치 하 는 횟수 를 수식 하 는 특수 기 호 를 사용 할 때 같은 표현 식 이 서로 다른 횟수 를 일치 시 킬 수 있 는 몇 가지 표현 방법 이 있 습 니 다. 예 를 들 어 "{m, n}", "{m,}", "?", "*", "+" 등 구체 적 으로 일치 하 는 횟수 는 일치 하 는 문자열 에 따라 정 해 집 니 다.일치 하지 않 는 횟수 를 반복 하 는 표현 식 은 일치 하 는 과정 에서 가능 한 한 많이 일치 합 니 다.예 를 들 어 텍스트 'dxxxdxxxd' 에 대해 예 를 들 면 다음 과 같다.
탐욕 모드:
표현 식
일치 결과
(d)(\w+)
"\ w +" 는 첫 번 째 "d" 이후 의 모든 문자 "xxxdxxxd" 와 일치 합 니 다.
(d)(\w+)(d)
"\ w +" 는 첫 번 째 "d" 와 마지막 "d" 사이 의 모든 문자 "xxxdxxx" 와 일치 합 니 다."\ w +" 도 마지막 "d" 와 일치 할 수 있 지만, 표현 식 전 체 를 성공 적 으로 일치 시 키 기 위해 서 "\ w +" 는 원래 일치 할 수 있 었 던 마지막 "d" 를 "양보" 할 수 있 습 니 다.
이 를 통 해 알 수 있 듯 이 '\ w +' 는 일치 할 때 규칙 에 맞 는 문 자 를 최대한 많이 일치 시 킵 니 다.두 번 째 예 에서 마지막 'd' 와 일치 하지 않 았 지만 전체 표현 식 이 성공 할 수 있 도록 하기 위해 서 입 니 다.마찬가지 로 '*' 와 '{m, n}' 을 가 진 표현 식 은 가능 한 한 많이 일치 합 니 다. '?' 를 가 진 표현 식 은 일치 할 수 있 을 때 도 가능 한 한 '일치 해 야 합 니 다' 입 니 다.이런 일치 원칙 을 '탐욕' 모델 이 라 고 부른다.
비 탐욕 모드: 일치 하 는 횟수 의 특수 기 호 를 수식 한 후에 '?' 번 호 를 추가 하면 일치 하 는 횟수 가 정 해 지지 않 은 표현 식 을 가능 한 한 적 게 일치 시 키 고 일치 하지 않 을 수 있 는 표현 식 을 가능 한 한 '일치 하지 않 음' 과 일치 시 킬 수 있 습 니 다.이런 일치 원칙 을 '비 탐욕' 모델 이 라 고도 부 르 고 '무리' 모델 이 라 고도 부른다.일치 하지 않 으 면 전체 표현 식 이 실 패 했 을 때 탐욕 모드 와 유사 합 니 다. 탐욕 모드 가 아 닌 것 은 최소한 일치 하여 전체 표현 식 이 성공 하도록 합 니 다.예 를 들 어 다음 과 같다. 텍스트 'dxxxdxxxd' 에 대한 예 를 들 면:
표현 식
일치 결과
(d)(\w+?)
"\ w +?" 는 첫 번 째 "d" 다음 문자 와 최대한 적 게 일치 합 니 다. 결 과 는 "\ w +?" 는 "x" 만 일치 합 니 다.
(d)(\w+?)(d)
전체 표현 식 을 성공 적 으로 일치 시 키 기 위해 서 는 '\ w +?' 가 'xxx' 와 일치 해 야 뒤의 'd' 를 일치 시 켜 전체 표현 식 을 성공 적 으로 일치 시 킬 수 있 습 니 다.따라서 결 과 는 "\ w +?" 가 "xxx" 와 일치 합 니 다.
더 많은 경우, 예 를 들 면 다음 과 같다. 예 를 들 어 1: 표현 식 "(. *)" 이 문자열 "aa bb" 와 일치 할 때 일치 하 는 결 과 는 성공 입 니 다.일치 하 는 내용 은 "aa bb" 전체 문자열 입 니 다. 표현 식 의 "" 는 문자열 의 마지막 "" 과 일치 합 니 다. 예 2: 이에 비해 표현 식 '(. *?)' 이 예 1 의 같은 문자열 과 일치 할 때 'aa' 만 얻 고 다음 과 일치 할 때 두 번 째 'bb' 를 얻 을 수 있 습 니 다.
거인 의 어깨 위 에 서다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.