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编程中的异常处理教程
Aug 21 Python
Python中几种导入模块的方式总结
Apr 27 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python简单实现操作Mysql数据库
Jan 29 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
使用Python3内置文档高效学习以及官方中文文档
May 19 Python
pybind11和numpy进行交互的方法
Jul 04 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
Python二次规划和线性规划使用实例
Dec 09 Python
python用Tkinter做自己的中文代码编辑器
Sep 07 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
php初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
js常见表单应用技巧
2008/01/09 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
jQuery实现简单的抽奖游戏
2017/05/05 jQuery
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
Python面向对象封装操作案例详解
2019/12/31 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
2013/02/07 HTML / CSS
毕业生动漫设计求职信
2013/10/11 职场文书
初三学生评语大全
2014/04/24 职场文书
办理房产过户的委托书
2014/09/14 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
多属性、多分类MySQL模式设计
2021/04/05 MySQL
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技