正则表达式贪婪匹配(正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks)

:暂无数据 2026-06-26 03:50:08 :0

正则表达式贪婪匹配(正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks)

各位老铁们好,相信很多人对正则表达式贪婪匹配都不是特别的了解,因此呢,今天就来为大家分享下关于正则表达式贪婪匹配以及正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks

这本质就是正则表达式的贪婪与非贪婪模式
1、贪婪模式:正则表达式一般趋向于最大长度匹配。
2、非贪婪模式:反之,取最小长度匹配
3、如何区分:在量词(*
+
?
{m,n})后面加上
?
号,就是非贪婪模式
由于\s是匹配空格,不好说明,我们用下面的例子来说明:
正则表达式:
\d+
和
\d+?
字符串:asd12sd345
\d+匹配结果:12、345(尽可能多的匹配)
\d+?匹配结果:1、2、3、4、5(匹配最小数量,也就是1个)
那么,同理\s*和\s*?这俩的区别就是:
\s*:匹配0个或多个空格,会尽可能多的匹配
\s*?:匹配最小数量的空格,也就是0个空格

正则表达式里面 .* 和 .* 有什么区别

  • .* 是贪婪模式

  • .*? 是勉强模式

  • .*+ 是侵占模式

以下是我对这几个模式的理解:

假定要分析的字符串是xfooxxxxxxfoo

  •  模式.*foo (贪婪模式): 

    模式分为子模式p1(.*)和子模式p2(foo)两个部分. 其中p1中的量词匹配方式使用默认方式(贪婪型)。 匹配开始时,吃入所有字符xfooxxxxxx去匹配子模式p1。匹配成功,但这样以来就没有了字符串去匹配子模式p2。本轮匹配失败;第二轮:减少p1部分的匹配量,吐出最后一个字符, 把字符串分割成xfooxxxxxxfo和o两个子字符串s1和s2。 s1匹配p1, 但s2不匹配p2。本轮匹配失败;第三轮,再次减少p1部分匹配量,吐出两个字符, 字符串被分割成xfooxxxxxxfo和oo两部分。结果同上。第四轮,再次减少p1匹配量, 字符串分割成xfooxxxxxx和foo两个部分, 这次s1/s2分别和p1/p2匹配。停止尝试,返回匹配成功。

  •     模式.*?foo (勉强模式): 

    最小匹配方式。第一次尝试匹配, p1由于是0或任意次,因此被忽略,用字符串去匹配p2,失败;第二次,读入第一个字符x, 尝试和p1匹配, 匹配成功; 字符串剩余部分fooxxxxxxfoo中前三个字符和p2也是匹配的. 因此, 停止尝试, 返回匹配成功。在这种模式下,如果对剩余字符串继续去寻找和模式相匹配的子字符串,还会找到字符串末尾的另一个xfoo,而在贪婪模式下,由于第一次匹配成功的子串就已经是所有字符,因此不存在第二个匹配子串。

  •     模式.*+foo (侵占模式): 

    也叫占用模式。匹配开始时读入所有字符串, 和p1匹配成功, 但没有剩余字符串去和p2匹配。因此, 匹配失败。返回。

***隐藏网址***

C++11正则表达式是贪婪匹配还是非贪婪匹配

//贪婪匹配,可以以该代码进行测试。不过少年你问的略有些偏门哪!
//----test.cpp----
#include 《stdio.h》
int main(){
int i=1;
int j=2;
j---i;
printf("i = %d, j = %d\n", i, j);
return(0);
}

正则表达式的贪婪模式与非贪婪模式

作为开始,我们先看下面的正则:

我们本来预想上面会匹配得到 "witch" 和 "broom" 两个字符串,运行上面的例子,却发现结果只匹配到 "witch" and her "broom" 一个字符串。

之所以出现这个结局,是因为正则的贪婪模式在起作用。

首先我们假设自己是正则引擎,来模拟搜索实现的过程。
正则引擎先从字符串的第0位开始搜索。

总结:在贪婪(默认)模式下,正则引擎尽可能多的重复匹配字符。

非贪婪模式和贪婪模式相反,可通过在代表数量的标识符后放置 ? 来开启非贪婪模式,如 ? 、 +? 甚至是 ?? 。

我们来看看非贪婪模式 .? 是怎么运转的:

总结:在非贪婪模式下,正则引擎尽可能少的重复匹配字符。

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

像+
*
?
以及{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我,进行探讨

正则表达式中...与

正则表达式中的.*和.*?区别为:模式不同、匹配条件不同、次数不同。

一、模式不同

1、.*:.*为贪婪匹配模式。

2、.*?:.*?为最小匹配模式。

二、匹配条件不同

1、.*:.*的匹配条件为单个字符。

2、.*?:.*?的匹配条件为多个字符组成的字符串。

三、次数不同

1、.*:.*是满足条件的情况匹配任意次。用来匹配前面的子表达式任意次。

2、.*?:.*?是满足条件的情况只匹配用来匹配前面的子表达式零次或一次。

python 正则表达式怎么匹配

Python本不等于正则语言,它只是内部集成了一个正则引擎,这个引擎实现了正则语言的功能,在Python中,这个引擎就是re模块。所以,你要先‘import re’。

下面网页详细介绍了正则本身和re模块,可供参考,基本上覆盖了所有内容。

正则表达式中,量词的贪婪模式与惰性模式有什么区别

贪婪模式尽可能多的匹配
惰性模式尽可能少的匹配
如字符串"abbbbc"c贪婪模式 "+?b"匹配字符串”ab"

关于正则表达式贪婪匹配和正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

正则表达式贪婪匹配(正则表达式 \s*和\s* 具体有什么区别求认真解答 thanks)

本文编辑:admin

更多文章:


函数的类型有哪些?函数类型有哪些

函数的类型有哪些?函数类型有哪些

本篇文章给大家谈谈函数分类,以及函数的类型有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 20:20

源码交易平台哪个最靠谱(国内低代码平台哪家强)

源码交易平台哪个最靠谱(国内低代码平台哪家强)

本篇文章给大家谈谈源码交易平台哪个最靠谱,以及国内低代码平台哪家强对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 20:10

gcc编译器参数(深度linux的arm-linux-gnueabihf-gcc编译参数如何配)

gcc编译器参数(深度linux的arm-linux-gnueabihf-gcc编译参数如何配)

其实gcc编译器参数的问题并不复杂,但是又很多的朋友都不太了解深度linux的arm-linux-gnueabihf-gcc编译参数如何配,因此呢,今天小编就来为大家分享gcc编译器参数的一些知识,希望可以帮助到大家,下面我们一起来看看这个

2026年10月11日 19:30

用记事本写vbs代码(怎么把记事本改成vbs格式)

用记事本写vbs代码(怎么把记事本改成vbs格式)

各位老铁们好,相信很多人对用记事本写vbs代码都不是特别的了解,因此呢,今天就来为大家分享下关于用记事本写vbs代码以及怎么把记事本改成vbs格式的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 17:23

asp是什么检查项目(医院血液检验项目RPR、TPPA、HIV-Ab各是什么意思)

asp是什么检查项目(医院血液检验项目RPR、TPPA、HIV-Ab各是什么意思)

“asp是什么检查项目”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看asp是什么检查项目(医院血液检验项目RPR、TPPA、HIV-Ab各是什么意思)!

2026年10月11日 10:20

汇编输出指令(用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720“)

汇编输出指令(用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720“)

各位老铁们好,相信很多人对汇编输出指令都不是特别的了解,因此呢,今天就来为大家分享下关于汇编输出指令以及用汇编语言循环指令在屏幕中间输出红底白字的“hello I am 720“的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看

2026年10月11日 07:20

本地搭建springboot项目(使用eclipse构建springboot项目)

本地搭建springboot项目(使用eclipse构建springboot项目)

各位老铁们,大家好,今天由我来为大家分享本地搭建springboot项目,以及使用eclipse构建springboot项目的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,

2026年10月11日 06:20

hump是什么意思?hump口语啥意思

hump是什么意思?hump口语啥意思

其实hump的问题并不复杂,但是又很多的朋友都不太了解hump是什么意思,因此呢,今天小编就来为大家分享hump的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 03:50

java入门神器好用吗(java 7入门经典适合初学者自学用吗)

java入门神器好用吗(java 7入门经典适合初学者自学用吗)

这篇文章给大家聊聊关于java入门神器好用吗,以及java 7入门经典适合初学者自学用吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 02:40

unix文件系统采用(Unix采用树形文件系统,其中“树形文件系统”什么意思)

unix文件系统采用(Unix采用树形文件系统,其中“树形文件系统”什么意思)

大家好,如果您还对unix文件系统采用不太了解,没有关系,今天就由本站为大家分享unix文件系统采用的知识,包括Unix采用树形文件系统,其中“树形文件系统”什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 00:50

最近更新

华硕f8笔记本硬盘(华硕F8更换硬盘)
2026-10-11 21:30:05 浏览:0
1+手机11pro(一加11pro参数)
2026-10-11 20:30:02 浏览:0
函数的类型有哪些?函数类型有哪些
2026-10-11 20:20:03 浏览:0
i3 2130(i3 2130 的CPU接口是什么)
2026-10-11 20:00:04 浏览:0
热门文章

标签列表