Python中正则表达式的用法总结


Posted in Python onFebruary 22, 2019

正则表达式很神奇啊

# -*- coding:utf-8 -*-
import re
def print_match_res(res):
  """打印匹配对象内容"""
  if res is not None:
    print(res.group())
  else:
    print(None)
# 两种匹配方式:
pattern="[A-Z][a-z]+"
# 一、使用re模块函数进行匹配
res=re.match(pattern,"Tom is a good boy")     # 匹配,返回匹配对象
print(type(res))
print(res.group())
# 二、使用预编译后的正则表达式对象的方法进行匹配
obj_pattern=re.compile(pattern)   # 预编译,返回正则表达式对象
print(type(obj_pattern))
res=obj_pattern.match("Tom is a good boy")    # 匹配,返回匹配对象
print(type(res))
print(res.group())
# 匹配对象的group()和groups()方法
pattern="\d{3}-\d{5}"
obj_pattern=re.compile(pattern)
res=obj_pattern.search("家庭电话:000-88886")
print(res.group())   # 返回整个匹配或特定子组
print(res.groups())   # 返回包含全部子组的元组
# match():从起始部分开始匹配,如果成功,返回匹配对象;失败,返回None。只匹配一次
pattern="my"
# res=re.compile(pattern).match("my name is li")
res=re.match(pattern,"my name is li")
print_match_res(res)
# search(): 从任意位置开始匹配,如果成功,返回匹配对象;失败,返回None。只匹配一次
pattern="my"
# res=re.compile(pattern).search("it's my dog")
res=re.search(pattern,"my name is li")
print_match_res(res)
# 查找全部
# findall(),finditer()
res=re.findall(r"th\w+","This and that",re.I)
print(res)
res=re.finditer(r"th\w+","This and that",re.I)
print(res)
print(next(res).group(),next(res).group())
# 替换
# sub(),subn()
res=re.sub("funny","fool","You are so funny")
print(res)
res=re.subn("funny","fool","You are so funny")
print(res)
# 分割
# splite()
res=re.split("\.","Mr.Smith")
print(res)
print("#"*50)
# 择一匹配符号 a|b
pattern="I|You|She"
res=re.compile(pattern,flags=re.IGNORECASE).match("i love you")
print_match_res(res)
res=re.compile(pattern,flags=re.I).search("who love you")
print_match_res(res)
# 匹配任意单个字符 .
pattern="w{3,}\..+\.com"
res=re.match(pattern,"wwww.google.com/index.html",re.I)
print_match_res(res)
# 字符集 [abc] [a-z0-9]
pattern="[A-Za-z0-9_]*\."
res=re.match(pattern,"Python3.?")
print_match_res(res)
# 特殊字符 \d \w \s \b \\
# 重复 + ? * {N,} {N,M}
# 分组 (...)
pattern="\w+@(\w{1,10}\.)*([a-z]*)"
res=re.match(pattern,"li@gmail.com")
print_match_res(res)
res=re.match(pattern,"li@qq.vip.org")
print_match_res(res)
print(res.group(0),res.group(1),res.group(2),sep="\t")
print(res.groups())
# 匹配字符串的起始和结尾,单词边界 ^a z$ \A \Z \b \B
pattern=r"^the"
# pattern=r"\Athe"
res=re.search(pattern,"The end of the world")
print_match_res(res)
res=re.search(pattern,"they smile")
print_match_res(res)
pattern=r"cry$"
# pattern=r"cry\Z"
res=re.search(pattern,"they cry")
print_match_res(res)
res=re.search(r"\bthe","bit the dog")
print_match_res(res)
res=re.search(r"\Bhe","bit the dog")
print_match_res(res)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python使用点操作符访问字典(dict)数据的方法
Mar 16 Python
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
python实现扫描日志关键字的示例
Apr 28 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
基于python操作ES实例详解
Nov 16 Python
Python grpc超时机制代码示例
Sep 14 Python
python 获取域名到期时间的方法步骤
Feb 10 Python
超级详细实用的pycharm常用快捷键
May 12 Python
安装pytorch时报sslerror错误的解决方案
May 17 Python
python ddt数据驱动最简实例代码
Feb 22 #Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 #Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 #Python
pandas修改DataFrame列名的实现方法
Feb 22 #Python
pyhanlp安装介绍和简单应用
Feb 22 #Python
Python3.7 dataclass使用指南小结
Feb 22 #Python
Python文件读写常见用法总结
Feb 22 #Python
You might like
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
php编程每天必学之验证码
2016/03/03 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
javascript 写类方式之三
2009/07/05 Javascript
DOM 基本方法
2009/07/18 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
利用Angular.js编写公共提示模块的方法教程
2017/05/28 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Python字符串格式化
2015/06/15 Python
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
使用python实现省市三级菜单效果
2016/01/20 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
Python实现的摇骰子猜大小功能小游戏示例
2017/12/18 Python
python版学生管理系统
2018/01/10 Python
python学生管理系统开发
2019/01/30 Python
python快排算法详解
2019/03/04 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python datetime中strptime用法详解
2019/08/29 Python
pymysql的简单封装代码实例
2020/01/08 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Django Paginator分页器的使用示例
2021/06/23 Python
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
2022/04/07 Servers