正则表达式中,星号加问号是匹配什么(分开我知道),比如/A*?/究竟匹配的是什么,请高人指点

如题所述

第1个回答  2019-06-29
像+
*
?
以及{M,N}
这几种量词(匹配数量)默认是属于贪婪量词,进行贪婪匹配
什么叫做贪婪匹配呢?贪婪就是尽可能的多匹配,贪心的意思
比如现在目标字符串是
AAAA
四个A组成的字符串
A*

A+
都会匹配
AAAA
A?
则会匹配
A
这就是贪婪匹配,实际运用中,有的时候我们却希望尽可能少的匹配
比如目标字符串
a
b
此时如果我们使用了贪婪量词
.*

则会匹配
a
b

整个字符串
可是我们只想要匹配第一对span标签怎么办?此时就需要用到懒惰量词,意思也很明显了,能偷懒就偷懒,呵呵,懒惰量词与贪婪量词的差别就是在贪婪量词的后面加个?号,就构成了懒惰量词,如下表
贪婪量词
懒惰量词
A*
A*?
A+
A+?
A?
A??
A{M,N}
A{M,N}?
还是以目标字符串
AAAA
来讨论
A*?
*号是匹配0次或多次,要偷懒怎么办呢?当然是最少次数了,也就是0
所以在这里匹配的结果是
没有匹配到任何内容
A+?
+是1次或多次,分析方法同上,最少次数是1次,所以匹配结果就是
A
A??
?是0次或1次,所以这里也不进行匹配,会偷懒吧,呵呵
再来看看刚刚的
a
b

要匹配第一对span,用懒惰量词就是
.*?

我已经说的够明白了吧?这些内容我以前都是查了好多资料才知道的。
正则表达式是相当强大的语言,尤其在进行字符匹配和查找时,当然要需要花一定的时间才能掌握,如果有问题可以百度HI我,进行探讨
相似回答
大家正在搜