이 정규식은 무엇을 합니까?
<!--.*?-->
답변1
이 정규식은 일치합니다HTML 주석
특히:
<!-- matches literal string "<!--"
. matches any character
* is a quantifier, it means "0 or more" of the previous character
? makes the regex non-greedy, so it matches as few times as possible
--> matches literal "-->"
따라서 이 텍스트에 대한 정규식은 다음과 같습니다.
blah <!-- first --> yaddahyaddah <!-- second --> other random words.
만 일치합니다 <!-- first -->
.
바라보다http://regex101.com/r/gF7vX2/1
아니요? 이는 첫 번째 <!--
항목과 마지막 항목 사이의 모든 항목과 일치합니다 -->
. 즉, 다음과 같이 일치합니다.<!-- first --> yaddahyaddah <!-- second -->
답변2
<!--
<!--
글자 그대로 문자 일치.
모든 문자와 일치합니다(개행 제외).*?
이전 정규 표현식을 0번에서 무한번까지, 가능한 한 적은 횟수로 일치시키고 필요에 따라 확장할 수 있는 수량자입니다. [게으른]-->
-->
글자 그대로 문자 일치
정규식 테스터 답변http://regex101.com/r/lA1bH5/2
*
이전 정규식은 다음과 같이 0번과 무한번 사이에서 일치합니다 .많은가능한 한 여러 번. 이것은 중요한 차이점입니다. 다음 두 가지 정규식을 고려하십시오.
- A: (
<!--.*?-->
당신이 질문한 것) - 두번째:
<!--.*-->
그리고 아래와 같이 데이터 라인 D를 고려하십시오. 정규식 A는 두 개의 일치 항목을 찾습니다. 정규식 B는 하나만 찾습니다.
D: <!-- comment one --> HTML <!-- comment two -->
A: (.... match #1 ....) (.... match #2 ....)
B: (................. match #1 .................)
따라서 정규식 B는 두 주석 사이의 HTML을 주석 내의 HTML로 잘못 처리합니다.