鱼C论坛

 找回密码
 立即注册
查看: 1532|回复: 17

[已解决]正则表达式

[复制链接]
发表于 2020-4-27 20:24:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
.*?  这个表达式,  大佬们能举个例子说下嘛,越详细越好,我百度了好久了,就是想不通,比如爬取某个网址的图片的时候,<img src="test.jpg" width="60px" height="80px"/>,这行
最佳答案
2020-4-28 09:27:55
本帖最后由 悠悠2264 于 2020-4-28 09:33 编辑
czh1303541051 发表于 2020-4-27 23:48
大哥你没看懂我意思,方便留个qq或者vx吗,感觉不实时指导我是看不懂这个正则表达式了



我再讲详细点。

.是表示任意一个字符(除换行符),如字符串:char="a",正则表达式:char=".",就会匹配到char="a"

.*表示匹配多个字符(除换行符)并开启贪婪模式。如字符串:str="this is a string",正则表达式:str=".*",则就会匹配到str="this is a string"
但如果字符串是:str="this is a string" char="a",这样他就会匹配到所有的,也就是:str="this is a string" char="a",这就是贪婪模式,匹配最多的,越多越好,恨不得全部匹配了。

是.*?的话,这就表示匹配多个字符(除换行符)并开启非贪婪模式,如字符串:str="this is a string" char="a",正则表达式:str=".*?",他就会匹配:str="this is a string"也就是匹配最少的,越少越好。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-27 20:42:04 | 显示全部楼层
Hello. 发表于 2020-4-27 20:28
src是图片地址
width是宽度
height是高度

我是想知道.*?在这里怎么来运作的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 20:42:48 | 显示全部楼层
BngThea 发表于 2020-4-27 20:32
百度一下,正则的贪心与非贪心

看了,但是看不懂,转不过弯来,麻烦以这个为例解释一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 21:20:04 | 显示全部楼层
悠悠2264 发表于 2020-4-27 21:03
.表示任意一个字符(除换行符),*表示匹配前面的子表达式(也就是前面的.)0次或多次,?跟在.*后面则表示 ...

还是没看懂,真看不懂这东西,就以你这个例子来说,如果是a.*c,字符串会是啥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 21:29:31 | 显示全部楼层
悠悠2264 发表于 2020-4-27 21:22
会是:abcdc,多了dc,因为要求最后一个字符是c,这个是匹配最多的情况。
所以说贪婪模式(.*)是匹配最 ...

'<li>.*?<img src = "(.*?)" width = .*?</li>'
那这又是什么意思,这是我看教程上讲师写得爬图片用的正则表达式,单单去看那些简单的例子我是能看懂,这个真看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 22:01:00 | 显示全部楼层
悠悠2264 发表于 2020-4-27 21:36
.*?就是匹配最少的字符,如果你不加问号,它就会从第一个匹配到最后一个

我貌似突然看懂了,一直理解不对,是不是这样理解
如:<img src="test.jpg" width="60px" height="80px"/>
懒惰模式正则:
src=".*?"
结果:src="test.jpg"
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。
这个.*?判断的不是.   是.前面的那个"    我一直以为判断的是.这个任意字符
是这样理解吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-27 23:48:19 | 显示全部楼层
悠悠2264 发表于 2020-4-27 22:32
?是非贪婪模式,不是贪婪模式,反掉了。匹配到src="test.jpg"是对的。
.是表示任意一个字符(除空格) ...

大哥你没看懂我意思,方便留个qq或者vx吗,感觉不实时指导我是看不懂这个正则表达式了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-28 09:38:53 | 显示全部楼层
悠悠2264 发表于 2020-4-28 09:27
我再讲详细点。

.是表示任意一个字符(除换行符),如字符串:char="a",正则表达式:char=".", ...

看懂了,谢大佬耐心解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-4-1 20:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表