想要在python中使用正则表达式,就需要先导入re模块,正则表达式是一个强大的功能,可以为我们节省很多工作量。

一、元字符:

用一些具有特殊含义的符号表示特定种类的字符或位置。
 . 匹配除换行符以外的任意字符
\w匹配字母或数字或下划线或汉字
\W匹配任何非字母数字或下划线或汉字
\s匹配任意的空白符
\d匹配数字 
\D匹配非数字字符
\b匹配单子的开始或结束
^匹配字符串的开始,如果放在字符串的开头,则表示取非。
$匹配字符串的结束
匹配次数
*重复零次或多次
+重复一次或更多次
?重复零次或一次
{n}重复n次
{n,}重复n次或多次
{n,m}重复n到m次。
范围
[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系。
[0-9] 匹配0~9的数字,同\d
[a-z]匹配所有的小写字母
[A-Z]匹配所有的大写字母
[a-zA-Z] 匹配所有的字母
[a-z0-9A-Z] 等同于\w
字符串转义

如果想匹配元字符本身或者正则中的一些特殊字符,使用\转义。例如匹配*这个字符则使用\*,匹配\这个字符,使用\\

需要转义的字符:$()*+.[]?\^{}|

为了避免过多\的使用,python提供了原生字符的方法,也就是在字符串前面加上一个“r”,代表此字符串中的“\”可直接用于正则表达式,而不用再次转义。因此,请养成在python的正则表达式字符串的前面添加一个“r“的好习惯。

二、re模块的方法

1、match

re.match(' 规则','字符串 ')   从字符串的开头进行匹配,匹配单个。

2、search
re.search(' ',' ')  在字符串中进行匹配,并返回第一个匹配到的值。
3、findall
re.findall('','') 在字符串中进行匹配,并以列表的形式返回所有满足的值。
>>> re.findall('\d+','dsg2335dhreh54623grh46fdh57')
['2335', '54623', '46', '57']

4、group,groups
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group()
print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)
print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)
print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)
print re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups()

5、sub
sub(pattern, repl, string, count=0, flags=0)用于替换匹配到的字符串。
>>> import re
>>> a = 'sfgwg323dgw13'
>>> b = re.sub(r'\d+','111',a)
>>> b
'sfgwg111dgw111'

6、split(pattern, string, maxsplit=0, flags=0) 根据指定匹配进行分组

content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"
new_content = re.split('\*', content)
# new_content = re.split('\*', content, 1)
print new_content
content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"
new_content = re.split('[\+\-\*\/]+', content)
# new_content = re.split('\*', content, 1)
print new_content
inpp = '1-2*((60-30 +(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2))'
inpp = re.sub('\s*','',inpp)
new_content = re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)', inpp, 1)
print new_content

转载于:https://www.cnblogs.com/ernest-zhang/p/5634078.html

python 内置模块-re相关推荐

  1. python turtle循环图案-Python内置模块turtle绘图详解

    urtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的 ...

  2. python内置模块_三分钟读懂Python内置模块collections

    collections模块 Python内置模块,在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.d ...

  3. python config模块_用Python内置模块处理ini配置文件

    原标题:用Python内置模块处理ini配置文件 简介 开发人员每天都在处理一些大型而复杂的项目, 而配置文件会帮到我们并节省不少时间.在处理配置文件过程中,无需更改源代码本身,只需要调整配置文件即可 ...

  4. python内置模块(三)

    ----------------------------接 python内置模块(二)--------------------------- 八. shelve模块      shelve模块是一个简 ...

  5. python内置模块re_python内置模块[re]

    python内置模块[re] re模块: python的re模块(Regular Expression正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...

  6. Python——内置模块中的内置函数

    内置模块中的内置函数 我们在安装好了 Python 配置文件后,也将 Python 本身带有的库也安装好了,Python 自带的库也叫做 Python的内置模块. Python 的内置模块是 Pyth ...

  7. python内置模块和内置方法

    python内置模块 time json re logging random os sys xml pikle shelve getopt uuid subprocess collections fu ...

  8. Python 内置模块之 re 库,一文搞定正则表达式初阶用法,滚雪球学 Python 第 13 篇

    橡皮擦,一个逗趣的互联网高级网虫.新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 十三.Python 内置模块之 re 库,一文搞定正则表达 ...

  9. python内置模块重要程度排名_论Python常见的内置模块

    Python常见的内置模块 系统的内置模块 sys hashlib hmac base64 time datetime sys模块 sys.argv()# 在Python脚本传参使用 sys.exit ...

  10. python常用内置模块-Python内置模块和第三方模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库(模块),几乎你想实现的任何功能都有相应的Python库支持,就类似于C#中的类库亦或JAVA的jar包,前端中的JS库. 使用模块有什么 ...

最新文章

  1. 程序员的疯狂:打工与创业的残酷区别
  2. Windows 10体验:文件资源管理器变成了首页
  3. C++笔记——指针函数/函数指针
  4. 工作177:时间戳转换
  5. PHP随机生成中国人姓名的类
  6. android 涂鸦之图片叠加,android图像处理系列之七--图片涂鸦,水印-图片叠加...
  7. AJAX提交表单数据
  8. Nginx系列(5):Web服务器分析之Linux I/O(理论中)
  9. 韩顺平Java基础入门笔记-第一章
  10. 北理工慕课 嵩天 Python零基础入门 笔记整理
  11. unity 实现PPT动画效果切换图片
  12. FreeSSL + ACME自动化续期域名SSL证书(支持泛域名)
  13. 分享2个ICON资源链接
  14. 电池革命:固态电池量产还有多远?
  15. java解压加密的7z格式文件
  16. ADB调试关闭荣耀手机的系统更新(烦人的推送)
  17. php如何ping域名的ip,使用PHP ping域名或IP
  18. 美国软件公司Salesforce获得区块链反垃圾邮件解决方案专利
  19. 关于图片转base64的加密解密
  20. 【Alpha】阶段第五次Scrum Meeting

热门文章

  1. 服务端开发——云服务器的端口转发设置(SSH隧道)
  2. php 查找无限级,Ztree + PHP 无限级节点 递归查找节点法
  3. 为什么计算机打不开系统盘了,为什么我从装了系统之后进入‘我的电脑’发现F/E盘都打不开了。系统提示:ses.exe找不到!...
  4. lisp scheme 果壳_走出Lisp(Scheme)困境
  5. python安卓开发实例_python服务器与android客户端socket通信实例
  6. mysql无法启动修复_记一次MySQL无法启动及修复经历
  7. hdfs的实验总结_实验2-熟悉常用的HDFS操作.doc
  8. 关于 create-react-app 自定义 eslint文件配置解决方案
  9. 判断三角形是否是直角三角形
  10. SpringBoot创建简单的hello world