superli 发表于 2020-12-18 19:30:00

正则表达式中匹配问题

import re

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

print(result1)
上面代码中第二行开头后面如果不加*的话只能匹配[]中的s,即结果是s://www.baidu.com,那为何结尾处后面未加*或+号表示识别前面多位,结果能完整匹配com或cn的。

小甲鱼的铁粉 发表于 2020-12-18 22:38:28


表示要匹配[]里面的一个字符,在它的后面加一个*就表示匹配它里面的任意一个字符0次或者多次,如果不加*就表示匹配一次,也就是s了

hrp 发表于 2020-12-18 23:33:19

import re

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

print(result1)

superli 发表于 2020-12-22 14:17:42

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

1、不加*匹配一次,为何匹配最后一个s而不是其它几个字符
2、末尾的【com|cn]没加*为何能全部匹配而不是只匹配其中一个字符?

z5560636 发表于 2020-12-22 14:47:45

*         匹配0个或多个表达式
+      匹配1个或多个表达式
页: [1]
查看完整版本: 正则表达式中匹配问题