正则表达式中的问号和的星号的语义区别

2020-12-07 09:15:24 字数 6056 阅读 7942

1楼:纯不纯你妹

.是任意字符。,.?是任意字符后面有一个字符。 .* 是任意衣服后面有多个字符

例如 abc..567 .?匹配(a b c . . 6 7 7)。 .*匹配(abc..567)

2楼:匿名用户

? 是 单字符匹配

* 是 多字符匹配

.? 是说 . 后面 跟着任意字符

.* 是说 . 后面 跟着 任意个数字符.,0个,1个,2个......

3楼:匿名用户

\u5f00\u59cb\u7684\u4e16\u754c

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

4楼:

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。

表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.

\s 匹配任何空白非打印字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 unicode 正则表达式会匹配全角空格符。

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

*限定符是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

比如:使用/<.*>/匹配的结果为:h1>chapter 1 - 介绍正则表达式使用/<.*?>/匹配结果为:h1。

拓展知识

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

5楼:匿名用户

\s匹配任意的空白符(包括空格,制表符(tab),换行符,中文全角空格)

\s则是任意不是空白符的字符

?涉及到贪婪模式

当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.

*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.

*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:

a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)

6楼:匿名用户

\w 等价于 [a-za-z0-9_]

\w 等价于 [^a-za-z0-9_],就是排除了\w的情况,也就是说它们表示的意思相反

7楼:匿名用户

简单的说就是,用一小段简单的各种字符的组合,即叫做 正则表达式,去实现复杂的:

字符串匹配,查找你到你所需要的内容,以便后期提取出来你所要的内容。

这个听起来很简单,但是很多现实的应用中,所要处理的字符串有千千万万种,各种复杂的字符,而且每个人的需求有无穷尽种,需要提取出的内容也是无穷多。而如果手动处理,写普通的if else语句去一点点判断字符串是否相等,则是无法实现的。

而用正则,就可以实现如此多的,繁杂的,极度复杂的,各种需求。

更多的内容,可以看看我所总结的:

正则表达式学习心得

再举几个实际的例子:

notepad++正则表达式替换举例1:一次性替换多个文件的后缀

notepad++正则表达式替换举例2:一次性替换多个路径

notepad++正则表达式替换举例3:一次性替换多个listitem为sect4

notepad++正则表达式替换举例4:给每一行都添加addicon的前缀

notepad++正则表达式替换举例5:给book的标题和地址添加html**

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

8楼:四舍**入

一、*表示匹配前面的字符

0个或多个

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

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

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

fo*? 匹配f

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

9楼:完旋真向

*?是惰性匹配,就是匹配尽可能少的次数。

.*?的意思是匹配任意字符,尽可能少的次数。

比如:abaaaaabb

用a.*b去匹配,会匹配到abaaaaabb全部,应为正则默认贪婪匹配,找到第一个b之后,发现后面还有b,会一直匹配下去。

所以可以使用贪婪匹配,a.*?b

这样的话,

只会匹配尽可能少的次数

就会匹配到

ab还有问题hi我。

10楼:徐_赫

后边多一个?表示懒惰模式。

必须跟在*或者+后边用

如:如果用正则匹配src中内容非懒惰模式匹配src=".*"

匹配结果是:src="test.jpg" width="60px" height="80px"

意思是从="往后匹配,直到最后一个"匹配结束懒惰模式正则:

src=".*?"

结果:src="test.jpg"

因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

.表示除\n之外的任意字符

*表示匹配0-无穷

+表示匹配1-无穷

11楼:计兴腾訾峰

.匹配任意字符1个

*表示匹配重复上一个字符0到无限次

?表示匹配前一个字符0次或一次,跟在*表示非贪婪模式默认是贪婪模式比如

<.*>会把所有字符吞下满足前面是《后面是》就返回字符串<.*?>一次吃一个字符满足条件返回字符串

12楼:乐观小山

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

举例介绍:

如:懒惰模式正则:

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。

13楼:罗美媛度子

\这是引用符,用来将这里列出的这些元字符当作普通的字符来进行匹配。例如正则表达式\$被用来匹配美元符号,而不是行尾,类似的,正则表达式\.用来匹配点字符,而不是任何字符的通配符。

.匹配任何单个字符。例如正则表达式r.t匹配这些字符串:rat、rut、r

t,但是不匹配root。

14楼:帛惜文谬寰

[a-za-z]\\d\\d(\\d|\\d)?

[a-za-z]第一位必须是字母;

d后面跟3个数字;

d可以是一个数字,也可以是两个数字;

(\\d|\\d)两个数字加一个符号"|"加3个数字?最后再跟一个字符

15楼:匿名用户

.表示任意字符

*:修饰前面的字符,0到多

+:修饰前面的字符,1到多

16楼:许舒南灵秋

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

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

?——(1)放在其他字符后面表示前面的字符可以有,也可以没有(2)放在*、+后面表示匹配尽可能少的字符例如:字符串fooooo,正则fo*和fo+会匹配整个字符串,fo+?

匹配fo,

fo*?

匹配f*+没有这样的用法,除非是匹配星号本身,即:

\*+表示一个或多个星号

正则表达式中“.*?”代表什么?

17楼:匿名用户

点代表的是任意字符。

* 代表的是取 0 至 无限长度

问号代表的是非贪婪模式。

三个链接在一起是取尽量少的任意字符,一般不会这么单独写。

他大多用在:.*?a

就是取前面任意长度的字符,到底一个 a 出现,匹配如下q@wer_qwerqweraljlkjlkjlkj,

得到:q@wer_qwerqwera 这部分,如果匹配不到后面的 a 字符,则匹配为空。

正则表达式,又称规则表达式,是计算机科学的一个概念,这个概念最初是由unix中的工具软件普及开的。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。正则引擎主要分为dfa、nfa两大类。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在perl中就内建了一个功能强大的正则表达式引擎。

正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

18楼:p为梦停留

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

它是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。

19楼:阿炎的情感小屋

正则表达式,又称规则表达式。是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在perl中就内建了一个功能强大的正则表达式引擎。

正则表达式这个概念最初是由unix中的工具软件(例如sed和grep)普及开的。

正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

扩展资料

正则表达式的作用:

1、匹配

检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:

string str="abc";

string reg="[a-za-z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。

2、切割

所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:

string str="zhangsan,lishi,wangwu"。

string reg=",";//表示以逗号作为切割符。

string arr=str.split(reg);//返回结果为。

3、替换

即将字符串中符合规则的字符替换成指定字符,如:

string str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。

str.replaceall("\\d","#");//表示将连续出现三个或三个以上的数字替换成“#”。

易语言正则到标签问题,易语言 正则表达式 如何去除html标签的样式

1楼 灰 豆 版本 2 程序集 窗口程序集 启动窗口 子程序 按钮1 被单击 局部变量 正则 正则表达式类 使用精易模块 局部变量 文本 文本型 文本 180324073 正则 创建 d 文本 标签1 标题 正则 取子匹配文本 1 1 易语言 正则表达式 如何去除html标签的样式 2楼 紫薇参星 ...

易语言里怎么用正则表达式匹配不知道几位数的数字

1楼 历史的掩映 若 以内 包含0位数字 d 若 以内 至少是1位 d 只是为判断字符串能否转的话,个人认为直接判断itoa atoi s 是否和与去掉了原来的s两头不影响数值的0的结果相同即可。意思就是先转成整数试试,然后再把这整数转回字符串,与原来的串比较,当然也要考虑少数你认可的特殊情况。 易...

易语言里怎么用正则表达式匹配不知道几位数的数字呢

1楼 历史的掩映 若 以内 包含0位数字 d 若 以内 至少是1位 d 只是为判断字符串能否转的话,个人认为直接判断itoa atoi s 是否和与去掉了原来的s两头不影响数值的0的结果相同即可。意思就是先转成整数试试,然后再把这整数转回字符串,与原来的串比较,当然也要考虑少数你认可的特殊情况。 2...