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 相关文章推荐
11个并不被常用但对开发非常有帮助的Python库
Mar 31 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
python实现彩票系统
Jun 28 Python
python实现Zabbix-API监控
Sep 17 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python挖矿算力测试程序详解
Jul 03 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
python sorted函数原理解析及练习
Feb 10 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
Mar 19 Python
python list的index()和find()的实现
Nov 16 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
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
php和html的区别点详细总结
2019/09/24 PHP
php实现文件上传基本验证
2020/03/04 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python @property的用法及含义全面解析
2018/02/01 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
劳动之星获奖感言
2014/02/01 职场文书
上班玩手机检讨书
2014/02/17 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL