python的正则表达式'\w'居然可以匹配中文

一、正则表达式总结较好的网址

https://www.jb51.net/tools/regexsc.htm

二、正则表达式先行断言和后行断言问题详解

https://www.cnblogs.com/sdgjytu/p/3669364.html

(?=pattern) 正向先行断言 
代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。 

(?!pattern) 负向先行断言 
代表字符串中的一个位置,紧接该位置之后的字符序列不能匹配pattern。 


(?<=pattern) 正向后行断言 
代表字符串中的一个位置,紧接该位置之前的字符序列能够匹配pattern。 

(?<!pattern) 负向后行断言 
代表字符串中的一个位置,紧接该位置之前的字符序列不能匹配pattern。 

三、\w居然能匹配汉字(我的版本python3)

patt=re.compile(r'\w')

patt.findall('中国人asdfg123&&&&中国万岁\n')

结果:

['中', '国', '人', 'a', 's', 'd', 'f', 'g', '1', '2', '3', '中', '国', '万', '岁']

网上有解释说:\w匹配的是能组成单词的字符,在python3 中re默认支持的是unicode字符集,当然也支持汉字
如果要让\w仅支持英文,加个re.A标志
print(re.findall(r"\w",s,re.A))
这样就不会匹配汉字了

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值