正则表达式中的 .*? 或 .*+ 是什么意思?

我知道它表示除换行符之外的任何字符串,但是为什么呢?
为什么不用:.* 来表示呢? 为什么后面多个?或+

一、*表示匹配前面的字符0个或多个

二、+表示前面的字符1个或多个

三、?表示放在其他字符后面表示前面的字符可以有,也可以没有,或者放在*、+后面表示匹配尽可能少的字符

例如:字符串fooooo,正则fo*和fo+会匹配整个字符串,

fo+? 匹配fo,

fo*? 匹配f

四、*+没有这样的用法,除非是匹配星号本身,即: \*+ 表示一个或多个星号

扩展资料:

正则表达式符号

\:

将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。

^:

匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。

$:

匹配输入行尾。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。

参考资料来源:百度百科-正则表达式

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-04
后边多一个?表示懒惰模式。
必须跟在*或者+后边用
如:<img src="test.jpg" width="60px" height="80px"/>
如果用正则匹配src中内容非懒惰模式匹配
src=".*"
匹配结果是:src="test.jpg" width="60px" height="80px"
意思是从="往后匹配,直到最后一个"匹配结束

懒惰模式正则:
src=".*?"
结果:src="test.jpg"
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

.表示除\n之外的任意字符
*表示匹配0-无穷
+表示匹配1-无穷本回答被网友采纳
第2个回答  2018-12-03

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.

举例介绍:

如:<img src="test.jpg" width="60px" height="80px"/>

懒惰模式正则:

src=".*?"

结果:src="test.jpg"

扩展资料

正则表达式特殊字符及其含义:

1、\cx    

匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。    

2、\f    

匹配一个换页符。等价于 \x0c 和 \cL。    

3、\n  

匹配一个换行符。等价于 \x0a 和 \cJ。    

4、\r    

匹配一个回车符。等价于 \x0d 和 \cM。    

5、\s    

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。    

6、\S    

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。    

7、\t    

匹配一个制表符。等价于 \x09 和 \cI。    

8、\v    

匹配一个垂直制表符。等价于 \x0b 和 \cK。    

参考资料:

百度百科——正则表达式

第3个回答  2013-12-25
.*? 是懒惰匹配,一旦匹配到第一个就不往下走了。(至于什么叫懒惰匹配 自己去百度。)
.*+是无限匹配直到最后一个。
第4个回答  2013-12-25
.表示任意字符
*:修饰前面的字符,0到多
+:修饰前面的字符,1到多

正则表达式中的.*?或.*+是什么意思?
正则表达式中的.*?或.*+的意思 1. .*?的意义:在正则表达式中,`.` 匹配除了换行符之外的任何字符,而 `*` 表示前面的字符可以重复任意次。因此,`.*` 表示匹配任意数量的任意字符。而 `?` 在这里表示非贪婪匹配,即尽可能少地匹配字符。所以,`.*?` 的意思是尽可能少地匹配任意字符。...

正则表达式中的.*?或.*+是什么意思?
一、"*" 符号在正则表达式中代表匹配前面的字符零次或多次。二、"+" 符号表示前面的字符必须出现一次或多次。三、"?" 符号放在其他字符后面,表示前面的字符可以有,也可以没有。如果放在"*"或"+"后面,它就变成了非贪婪匹配,即匹配尽可能少的字符。四、"*+"" 这样的用法在正则表达式中是不存在...

正则表达式中的 .*? 或 .*+ 是什么意思?
正则表达式中的"."*?"和"."*+"是两个特殊的字符模式,它们在匹配时有不同的行为。首先,"*"表示前面的字符可以出现0次或多次,而"+"则限定必须至少出现一次。例如,正则表达式"fo*"会匹配"fooooo"中的所有"fo",而"fo+"则只匹配完整的"fo"部分。然而,"*?"和"+"后面加上"?"有特殊的含...

正则表达式中的 .*? 或 .*+ 是什么意思?
一、*表示匹配前面的字符0个或多个 二、+表示前面的字符1个或多个 三、?表示放在其他字符后面表示前面的字符可以有,也可以没有,或者放在*、+后面表示匹配尽可能少的字符 例如:字符串fooooo,正则fo*和fo+会匹配整个字符串,fo+? 匹配fo,fo*? 匹配f 四、*+没有这样的用法,除非是匹配星号...

正则表达式.*?是什么意思?
一、基本解释 在正则表达式中,"."代表匹配除换行符之外的任何单个字符,"*"表示匹配前面的子表达式零次或多次,"?"在这里用于控制贪婪模式与懒惰模式的选择。组合起来,".*?"的意思是懒惰模式匹配任意字符序列,即尽可能少的匹配字符。也就是说,它会尽可能早地结束匹配过程,以匹配到尽可能少的字符...

正则表达式中 .* 与 .? 与 .*? 这三种写法的区别是什么?
.匹配任意字符,*表示重复任意次数,在*,+后的?表示非贪婪匹配 ,单个?表示匹配0或1次 .* 匹配尽可能多的字符 .*? 只匹配满足正则的最小字符串 .? 匹配 任意一个字符 ,或者在此位置无字符 如 字符串"acbabc" 正则"^.*b"匹配 "acbab",正则"^.*?b"匹配 "acb"...

python 正则表达式.*? 是什么意思?
1、. 匹配任意除换行符“\\n”外的字符;2、*表示匹配前一个字符0次或无限次;3、+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复;4、 .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。如:a.*?b匹配最短的,以a开始,以b结束...

正则表达式 .*? 是什么意思啊?
正则表达式中的 .* 表示匹配任意字符(除了换行符)0次或多次。这是一个贪婪匹配,因为它会匹配尽可能多的字符。正则表达式中的 .*? 表示匹配任意字符(除了换行符)0次或多次,但这是一个非贪婪匹配,也就是最小匹配。它只会匹配满足条件的最小字符数。举例说明:- 懒惰模式正则表达式:src=".*?

python正则表达式.*?是什么意思?
Python正则表达式中的“.?”表示非贪婪模式的匹配任意字符。详细解释如下:1. 正则表达式的组成部分:在Python的正则表达式中,`.`代表匹配除了换行符之外的任意字符。`*`表示匹配前一个字符0次或多次。因此,“.”和“*”组合在一起表示匹配任意数量的任意字符。2. ...

限定符含义
在正则表达式中,有一些特殊字符和符号具有特定的含义,它们用于控制模式的匹配规则。首先,"*" 表示零次或多次匹配。例如,"zo*" 将匹配 "z" 和 "zoo",因为 "*" 表示前面的字符可以出现0次或任意次数。这相当于写成 "{0,}"。"+" 符号则要求前面的字符或子表达式至少出现一次,如 "zo+" 只...

相似回答