正则表达式的.*?是什么意思 和()

如题所述

"."是表示匹配所有character:
(Dot.) In the default mode, this matches any character except a newline. If the
DOTALL flag has been specified, this matches any
character including a newline.

"*"是表示匹配0个或者多个
Causes the resulting RE to match 0 or more repetitions of the preceding RE, as
many repetitions as are possible. ab* will match 'a',
'ab', or 'a' followed by any number of 'b's

“*?”关闭贪婪算法
*?, +?, ??The "*", "+", and "?" qualifiers are all greedy; they match
as much text as possible. Sometimes this behaviour isn't desired; if the RE <.*> is matched against
'<H1>title</H1>', it will match the entire string, and
not just '<H1>'. Adding "?" after
the qualifier makes it perform the match in non-greedy or minimal fashion; as few characters as possible will be
matched. Using .*? in the previous expression will match
only '<H1>'.

例子,没有?,会匹配尽量多:
>>> greed_p = re.compile("(a.*?d)")
>>> p = re.compile("(a.*d)")
>>> s="abcdabcd"
>>> print greed_p.findall(s)
['abcd', 'abcd']
>>> print p.findall(s)
['abcdabcd']
>>>追问

好多英文看不懂 我英文好差

追答

直接看例子好了。你这里的?是用来关闭贪婪算法的。

追问

对了, 高手 可以加下我QQ吗

温馨提示:内容为网友见解,仅供参考
无其他回答

正则表达式的.*?是什么意思 和()
"."是表示匹配所有character:(Dot.) In the default mode, this matches any character except a newline. If the DOTALL flag has been specified, this matches any character including a newline."*"是表示匹配0个或者多个 Causes the resulting RE to match 0 or more repetitions of the pre...

python 正则表达式.*? 是什么意思 详细解释
Python中的正则表达式中,".*?"是一个特殊组合,用于描述匹配行为。简单来说,它有以下含义:首先,"."(点号)匹配任何单个字符,除了换行符。这表示它可以匹配任何字符,除了行结束符。"*"(星号)符号表示前面的字符可以出现0次或任意次数。所以如果".*"紧跟在"."后面,可以匹配任何数量的任意字符。

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

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

正则表达式 .*? 是什么意思啊?
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.举例介绍:如: 懒惰模式正则:src=".*?"结果:src="test.jpg"

python正则表达式.*?是什么意思?
在正则表达式中,“.”和“*”组合默认是贪婪模式,即尽可能多地匹配字符。但在某些情况下,我们可能只希望匹配尽可能少的字符,这时就需要使用非贪婪模式。在“.*”后面加上“?”就表示非贪婪模式,即尽可能少地匹配字符。举个例子,假设有一段文本为:"...

正则表达式(.*?)是什么意思
?是惰性匹配,就是匹配尽可能少的次数。.*?的意思是匹配任意字符,尽可能少的次数。比如:abaaaaabb 用 a.*b去匹配,会匹配到abaaaaabb 全部,应为正则默认贪婪匹配,找到第一个b之后,发现后面还有b,会一直匹配下去。所以 可以使用贪婪匹配,a.*?b 这样的话, 只会匹配尽可能少的次数 ...

正则表达式里面 .* 和 .*? 有什么区别?
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.\\s 匹配任何空白非打印字符,包括空格、制表符、换页符等等。等价于 [ \\f\\n\\r\\t\\v]。注意 Unicode 正则表达式会匹配全角空格符。\\S 匹配任何非空白非打印字符。等价于 [^ \\f\\n\\r...

正则表达式中“.*?”代表什么?
简介:正则表达式,又称规则表达式,是计算机科学的一个概念,这个概念最初是由Unix中的工具软件普及开的。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。正则引擎主要分为DFA、NFA两大类。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式...

php 正则表达式中的 .*? 表示什么意思?
是非贪婪模式 .*会匹配后面的一切字符,就是到结束的意思 加?后就是不贪婪模式,这时要看?后边的字符是什么了,如.*?"的意思是遇到双引号则匹配结束

相似回答