这个正则表达式是什么意思?

这个正则表达式是什么意思?

这个正则表达式有什么作用?

<!--.*?-->

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

相关内容