鱼C论坛

 找回密码
 立即注册
查看: 2150|回复: 4

正则表达式中匹配问题

[复制链接]
发表于 2020-12-18 19:30:00 | 显示全部楼层 |阅读模式

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

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

x
import re

patten='[com|https]*://[^/s]*[com|cn]'#为何末尾的[]可以完整识别
string="<a href='https://www.baidu.com'>百度首页</a>"
result1=re.search(patten,string)

print(result1)
上面代码中第二行开头[com|https]后面如果不加*的话只能匹配[]中的s,即结果是s://www.baidu.com,那为何结尾处[com|cn]后面未加*或+号表示识别前面多位,结果能完整匹配com或cn的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-18 22:38:28 | 显示全部楼层
[com|https]

表示要匹配[]里面的一个字符,在它的后面加一个*就表示匹配它里面的任意一个字符0次或者多次,如果不加*就表示匹配一次,也就是s了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-18 23:33:19 From FishC Mobile | 显示全部楼层
import re

patten=r'http[s]*://.+(com|cn)'
string="<a href='https://www.baidu.com'>百度首页</a>"
result1=re.search(patten,string)

print(result1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-22 14:17:42 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-12-18 22:38
表示要匹配[]里面的一个字符,在它的后面加一个*就表示匹配它里面的任意一个字符0次或者多次,如果不加* ...

1、不加*匹配一次,为何匹配最后一个s而不是其它几个字符
2、末尾的【com|cn]没加*为何能全部匹配而不是只匹配其中一个字符?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-22 14:47:45 | 显示全部楼层
*         匹配0个或多个表达式
+        匹配1个或多个表达式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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