为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式 [] 使用

/ 猿问

正则表达式 [] 使用

Zr_0118 2019-09-03 12:33:20
import re

str = r'[.com|.cn]'
str1 = 'www.baidu.com'
r1 = re.compile(str)
res = r1.findall(str1)
print(res) #这里的[]中只匹配一个字符
输出结果为['.', '.', 'c', 'o', 'm']

pat = "[a-zA-Z]+://[^\s]*[.com|.cn]"
string = '<a href="https://www.baidu.com">百度</a>'
rst = re.compile(pat).findall(string)
print(rst)
输出结果为['https://www.baidu.com']
我想知道为什么第二个输出[.com|.cn]里面 为什么匹配的不是单个字符?


查看完整描述

1 回答

?
pardon110

[]用于表示一个字符集合,

特殊字符在集合中,失去它的特殊含义。比如 [(+*)] 只会匹配这几个文法字符 '(''+''*', or ')'

[.com|.cn]

之所以有差别,在于你的正则表达式,第一个正则妥妥一次只匹配单个字符而已

而在第二个正则中,第一个正则仅仅是其子集。换而言之,只会用整个正则规则去匹配目录字符串,匹配到了就打印出来,而不是用局部正则匹配。

查看完整回答
反对 回复 2019-09-03

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信