이 정규식은 무엇을 의미합니까?

이 정규식은 무엇을 의미합니까?

이 정규식은 무엇을 합니까?

<!--.*?-->

답변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 -->

보다http://regex101.com/r/fP4kA3/1

답변2

  • <!--<!--문자 그대로 문자와 일치합니다 .
  • .모든 문자와 일치합니다(개행 제외).
  • *?0과 무제한 사이에서 가능한 한 적은 횟수로 이전 정규식과 일치하는 수량자이며 필요에 따라 확장됩니다. [게으른]
  • -->-->문자 그대로 문자와 일치합니다 .

정규식 테스터의 답변http://regex101.com/r/lA1bH5/2

*다음과 같이 0회에서 무제한 횟수 사이의 이전 정규 표현식과 일치합니다 .많은가능한 한 여러 번. 이것은 중요한 차이점입니다. 다음 두 정규식을 고려하세요.

  • A: <!--.*?-->   (당신이 질문한 것)
  • 비:<!--.*-->

그리고 아래에 표시된 데이터 라인 D를 고려해보세요. Regex A는 두 개의 일치 항목을 찾습니다. 정규식 B는 하나만 찾습니다.

D: <!-- comment one --> HTML <!-- comment two -->

A: (.... match #1 ....)      (.... match #2 ....)
B: (................. match #1 .................)

따라서 정규식 B는 마치 주석에 있는 것처럼 두 주석 사이의 HTML을 잘못 처리합니다.

관련 정보