python中文正则表达式知识整理

编码问题

  • 判断字符是否包含中文
    \u4e00\u9fa5unicode编码,并且正好是中文编码的开始和结束的两个值,所以这个正则表达式可以用来判断字符串中是否包含中文。
s='版权声明:本文为CSDN博主的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。'.encode() #字符串转义
temp=s.decode('utf-8')
pattern="[\u4e00-\u9fa5]+"#中文正则表达式
reg = re.compile(pattern) #生成正则对象 
results=reg.findall(temp)
for result in results:
    print(result)
  • 编码设为unicode
    知乎回答
import importlib,sys
importlib.reload(sys)

分组匹配

(?P...)支持分组匹配。

s = '11022319900808666X'
res= re.search('(?P<省份>\d{3})(?P<城市>\d{3})(?P<born_year>\d{4})',s)
print(res.groupdict())#结果转为字典

输出结果为:

{‘省份’: ‘110’, ‘城市’: ‘223’, ‘born_year’: ‘1990’}

分组的回溯引用

引用之前分组的匹配,使用\N引用编号为N的分组。如匹配html标签,<\w+>.*?</\1>

相关资源


版权声明:本文为spatial_coder原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。