Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,使用python的re模块,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息。python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配。

【1】元字符:^ $ * + ? {} [] | () \

.表示任意字符

+ 对于前一个字符重复1到无穷次

[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可以理解成或的关系。

^ 如果放在字符串的开头,则表示取非的意思。[^5]表示除了5之外的其他字符。而如果^不在字符串的开头,则表示它本身。

具有重复功能的元字符:

* 对于前一个字符重复0到无穷次

对于前一个字符重复1到无穷次

?对于前一个字符重复0到1次

{m,n} 对于前一个字符重复次数在为m到n次,其中,{0,} = *,{1,} = , {0,1} = ?

{m} 对于前一个字符重复m次

\d 匹配任何十进制数;它相当于类 [0-9]。

\D 匹配任何非数字字符;它相当于类 [^0-9]。

\s 匹配任何空白字符;它相当于类 [ fv]。

\S 匹配任何非空白字符;它相当于类 [^ fv]。

\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。

\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。

【findall】

#re.findall #遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。#格式:#re.findall(pattern, string, flags=0)#完全比配

ret=re.findall('w\w{2}l','hello world')print(ret)#^ 开始,这里是以h开始的表达式中间任意三个字符

ret=re.findall('^h...o','hellogdgdfg')print(ret)#$结尾

ret=re.findall('a..x$','fdfddfaghx')print(ret)#*重复匹配[0,+00]

ret=re.findall('a.*li','afjkadfdfsdliw')print(ret)

ret2=re.findall('ab*','saabgfabffdfgab')print(ret2)#+ [1,+00] 比配到具体的会全部显示出来

ret=re.findall('a+b','aaaaabfdfaabfdfdabddb')print(ret)#?[0,1] 匹配到,只会显示要比配数据重复的会去掉不,比配到一个也显示

ret=re.findall('a?b','aaaabdfasbfdsabfg')print(ret)#{num} 比配具体到有具体个数#ret=re.findall('a{5}b','vaaaaaab')#print(ret)##{num-nums} 可以有多少个数#ret1=re.findall('a{0,4}b','vaffaaabbbb')#print(ret1)

#使用Python的r前缀,就不用考虑转义的问题

#r是raw(原始)的意思。因为在表示字符串中有一些转义符,如表示回车'\n'。如果要表示\表需要写为'\\'。但如果我就是需要表示一个'\'+'n',不用r方式要写为:'\\n'。但使用r方式则为r'\n'这样清晰多了。

#print(re.findall(r'I\b','hello, I am a kebi'))

【3】finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。

p = re.compile(r'\d+')for m in p.finditer('one1two2three3four4'):print m.group()

【4】search

*注:match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:

group() 返回被 RE 匹配的字符串

start() 返回匹配开始的位置

end() 返回匹配结束的位置

span() 返回一个元组包含匹配 (开始,结束) 的位置

group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。

a. group()返回re整体匹配的字符串,

b. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常

c.groups()groups() 方法返回一个包含正则表达式中所有小组字符串的元组,从 1 到所含的小组号,通常groups()不需要参数,返回一个元组,元组中的元就是正则表达式中定义的组。

print(re.search('\dcom','www.4comrunoob.5com').group()) #4com

importre

a= "123abc456"

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)) #123abc456,返回整体

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)) #123

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)) #abc

print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)) #456###group(1) 列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。###

# ret=re.search('(?P\d{3})/(?P\w{3})','weeew34ttt123/ooo')

# print(ret)

# print(ret.group('id'))

# print(ret.group('name'))

【5】match:从字符串的起始位置匹配,若起始位置不符合正则表达式,则返回空

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')print(m.group(0))#group(0)永远是原始字符串

print(m.group(1))print(m.group(2))

【6】split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。

importre

p= re.compile(r'\d+')print p.split('one1two2three3four4')### output ####['one', 'two', 'three', 'four', '']

【7】compile()编译正则表达式模式,返回一个对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)

importre

obj=re.compile('\.com')

ret=obj.findall('file.comerNBA')print(ret)print(re.findall('\.com','file.comerNBA'))

tt= "Tina is a good girl, she is cool, clever, and so on..."rr= re.compile(r'\w*oo\w*')print(rr.findall(tt)) #查找所有包含'oo'的单词

执行结果如下:

['good', 'cool']

【8】sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]):使用repl替换string中每一个匹配的子串后返回替换后的字符串。

当repl是一个字符串时,可以使用\id或\g、\g引用分组,但不能使用编号0。

当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。

count用于指定最多替换次数,不指定时全部替换。

importreprint(re.sub('a..x','sNBb','hfjasalexdens'))#----------------

p = re.compile(r'(\w+) (\w+)')

s= 'i say, hello world!'

print p.sub(r'\2 \1', s)deffunc(m):return m.group(1).title() + ' ' + m.group(2).title()printp.sub(func, s)### output ####say i, world hello!#I Say, Hello World!

【9】subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]):返回 (sub(repl, string[, count]), 替换次数)。

importre

p= re.compile(r'(\w+) (\w+)')

s= 'i say, hello world!'

print p.subn(r'\2 \1', s)deffunc(m):return m.group(1).title() + ' ' + m.group(2).title()printp.subn(func, s)### output ####('say i, world hello!', 2)#('I Say, Hello World!', 2)

python re模块下载_python re模块相关推荐

  1. python xlrd模块下载_python xlrd模块介绍

    转载自:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html 一.安装xlrd模块 到python官网下载 二.使用介绍 1.导入 ...

  2. python re模块下载_python re模块详解

    1.正则表达式基础 1.1正则表达式概念 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...

  3. python pymysql模块下载_Python Pymysql模块

    Python Pymysql的使用 Pymysql的作用 简单来说:pymsql是Python中操作MySQL的模块,就是让我们通过python来实现对数据库的操作的 (1)pymysql模块的下载 ...

  4. python os模块下载_Python OS模块目录文件处理

    Python编程语言优势特点比较突出,在Python语言中,有一种标准模块叫OS模块,Python OS模块包含普遍的操作系统功能,如果你希望你的程序能够与平台无关的话,这个模块尤为重要,它允许一个程 ...

  5. python re模块下载_python: re模块

    在Python中可以使用正则表达式, Python提供re模块,包含所有正则表达式的功能.由于Python的字符串本身也用\转义,所以要特别注意:在字符串的前面加上 r 的前缀, 就不用考虑转义的问题 ...

  6. python pyh模块下载_Python PYH模块 · Seacme Huang

    Python生成HTML代码,制作HTML表格 一.pyh模块介绍 1.1 介绍 pyh是一个强大且简约的python模块,你可以使用它在python程序中生成HTML内容. pyh为了这一切提供了非 ...

  7. python xlrd模块下载_python xlrd模块

    一.什么是xlrd模块? Python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库. 二.使用介绍 1.常用单元格中的数据类型 类型 含义 e ...

  8. python os模块下载_python os模块

    os 模块提供了一个统一的操作系统接口函数, 这些接口函数通常是平台指定的,os 模块能在不同操作系统平台如 nt 或 posix中的特定函数间自动切换,从而能实现跨平台操作 1.文件操作 build ...

  9. python安装后如何使用-python如何安装下载后的模块

    Python中的内置模块可以直接使用,如os模块,sys模块. 使用第三方模块之前,需要先下载并安装该模块,然后就能像使用标准模块和自定义模块那样导入并使用了.因此,本节主要讲解如何下载并安装第三方模 ...

  10. 跳一跳python源码下载_Python玩跳一跳【简】

    准备环境: Windows 10: [有] 安卓手机 [有] python(版本建议3以上) adb驱动 依赖安装包 Python下载安装[官网下载并安装] 详情参见 pip安装 pip用于安装依赖包 ...

最新文章

  1. Redis基本数据类型1--String
  2. Go 语言的%d,%p,%v等占位符的使用
  3. bashrc, bash_profile etc;
  4. java调用python代码
  5. 9种高性能可用高并发的技术架构
  6. 插件代码_我们开源了一款 SonarQube iOS 代码扫描插件
  7. sql 拼接同列的值
  8. 在超链接href中实现form的提交
  9. html5之Fullscreen全屏API
  10. 201671030109 词频统计软件项目报告
  11. Chrome网页观看百度云视频加速
  12. Python办公自动化实战 01 | Python优势与自动化思维让你的工作化繁为简
  13. 你知道这一周有哪些程序员好书上了热搜吗?
  14. DepthPano-TOG2020 学习整理(一)——有关全景图的三维场景重建
  15. Module not found: Error: Can‘t resolve ‘vue‘ in ‘C:\Users\86135\Desktop\webpack-vue\Vue\src\js‘
  16. 对接IronSource广告(视频)
  17. JSP+ssm计算机毕业设计高速公路管理系统设计与实现e6hx6【源码、数据库、LW、部署】
  18. TMS320F2812需要注意的几点
  19. 权责发生制与收付实现制在企业与事业单位会计处理的比较
  20. SQLite效率评测!

热门文章

  1. Java中的设计模式【我终于懂设计模式了】
  2. 喜欢蓝蓝的天空白白的云。这首《 Blue Skies》就是啦。
  3. 佛系前端面试题记录--第一周
  4. cron表达式每隔1小时一次_cron 每隔1小时50分钟_cron每小时执行一次
  5. 12306 终于随随便便撑起洪峰流量了,全面拥抱Redis 6.x!
  6. 浅学几天统计(SPSS)
  7. CrystalDiskMark简介
  8. html怎样制作动态页面,HTML如何制作网页动态时钟
  9. pixhawk启动脚本分析
  10. ARM与x86之1--Wintel帝国