程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

python-1:正则表达式(基础知识点)

发布于2020-01-01 13:37     阅读(781)     评论(0)     点赞(3)     收藏(1)


1、简单匹配:

  • \d  →匹配一个数字
  • \w →匹配一个数字或字母
  • \s  →匹配一个空格(包括tab等空白符)
  • .    →匹配任意字符
  • *   →匹配任意个字符(包括0个)
  • +  →匹配至少一个字符
  • {n}→匹配n个字符
  • {n,m}→匹配n到m个字符

2、进阶匹配:

  • []    →表示范围,如[0-9a-zA-Z]可以匹配一个数字或一个字母
  • []+ →表示匹配至少一个
  • []*  →表示匹配任意个,如[0-9a-zA-Z]*可以匹配任意个数字或任意个字母
  • []{n,m}→表示匹配n到m个
  • A|B →表示既可以匹配A,也可以匹配B
  • ^    →表示匹配的开头
  • $    →表示匹配的结束
  • ()    →表示分组

3、re模块:

最基本的使用:

 

import re
re.match(r'正则表达式','待匹配的字符串')
#匹配成功,返回一个Match对象。不然,返回None

 

编译后再匹配:

import re
re_compile = re.compile(r'正则表达式')
re.match('待匹配字符串')

4、其他用途(待补充):

  • 匹配分割字符串,re.split(),如去除空格与一些其他的符号:
复制代码
# 去除空格
import
re a_str = 'a b c' a_str_out = re.split(r'\s+', a_str) print(a_str_out) #['a','b','c']
b_str = 'a b , c ,;d'
b_str_out = re.split(r'[\s\,\;]+', b_str)
#['a','b','c','d']
复制代码
  • 分组,match.group(),group(0)是原始字符,group(1),group(2)...对应后续的每一个分组()
复制代码
import re
a_str = '111-11111'
a_match = re.match(r'(\d{3})-(\d{5})',a_str)
a_match.group(0)
# '111-11111'
a_match.group(1)
# '111'
a_match.group(2)
# '11111'
复制代码

5、需要注意的

  • 为了不被字符串转义的问题困扰,建议使用Python的r前缀。即r''
  • 正则表达式的匹配是贪婪匹配。实现非贪婪匹配用?

对于 120300,r'^(\d+)(0*)$' 匹配后的分组为(‘120300’,‘’)

                  而  r'^(\d+?)(0*)$' 匹配后的分组为('1203', '00')

\d+会尽可能多的匹配,\d+?会尽可能少的匹配

看了廖老师的正则表达式模块后,因为经常容易忘记一些语句,所以写下博文方便日后回顾。感谢廖老师!

参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017639890281664

 



所属网站分类: 技术文章 > 博客

作者:短发越来越短

链接:https://www.pythonheidong.com/blog/article/198693/4ad8dc08f448dcd91350/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)