這個正規表示式是什麼意思?

這個正規表示式是什麼意思?

這個正規表示式有什麼作用?

<!--.*?-->

答案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

  • <!--<!--按字面意思匹配字符
  • .匹配任何字元(換行符除外)
  • *?是一個量詞,符合前面的正規表示式零次到無限次,盡可能少的次數,根據需要擴展[lazy]
  • -->-->按字面意思匹配字符

正規表示式測試人員的回答http://regex101.com/r/lA1bH5/2

請注意,*在零次和無限次之間匹配前面的正規表示式,如許多盡可能次。這是一個重要的區別。考慮以下兩個正規表示式:

  • A:(<!--.*?-->   你問的那個)
  • 乙:<!--.*-->

並考慮資料線 D,如下圖所示。正規表示式 A 將在其中找到兩個匹配項;正規表示式 B 只找到一個:

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

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

因此,正規表示式 B 會錯誤地將兩個註解之間的 HTML 視為註解中的 HTML。

相關內容