python(九)re模块

python中re模块提供了正则表达式相关操作。

1、 字符串匹配:

  • .    匹配除换行符以外的任意字符
  • \w 匹配字符或数字或下划线或汉字
  • \s  匹配任意空白字符
  • \d 匹配数字
  • \b 匹配单词的开始或结束
  • ^  匹配字符串的开始
  • $   匹配字符串的结束

2、字符串次数匹配:

  • * 重复0次或多次
  • + 重复1次或多次
  • ?  重复0次或1次
  • {n} 重复n次
  • {n,} 重复n次或更多次
  • {n,m} 重复n到m次

3、re模块的方法

方法一:match

match:从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.


1

2

3

4

#格式:re.match(pattern,string,flags=0)

#     pattern: 正则模型      

#     string:要匹配的字符串 

#     flags:匹配模式

举例说明:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#无分组

import re

 

str=‘hello,jack123‘

 

r=re.match(‘h\w+‘,str)

print(r.group())        #获取匹配到的所有结果

print(r.groups())       #获取模型中匹配到的分组结果

print(r.groupdict())    #匹配模型中匹配到的分组结果

 

#结果:

hello

 

#有分组

#分组:为了提取匹配成功的指定内容(先匹配成功全部正则,然后再将匹配成功的局部内容提取出来)

 

r1=re.match(‘h(?P<name>\w+).*k(\d+)‘,str)

print(r1.group())       #获取匹配到的所有结果

print(r1.groups())      #获取模型中匹配到的分组结果

print(r1.groupdict())   #获取模型中匹配到的分组中所有 执行了key的组

 

#结果:

hello,jack123

(‘ello‘‘123‘)

{‘name‘‘ello‘}

方法二:search

search: 浏览整个字符串去匹配第一个,为匹配成功返回None,这里强调一下match方法是从开头去匹配。

格式: search(pattern,string,flags=0)

举例说明:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

import re

str=‘123hello,jack123‘

#无分组

r=re.search(‘h\w+‘,str)

print(r.group())         #获取匹配到的所有结果

print(r.groups())        #获取模型中匹配到的分组结果

print(r.groupdict())     #获取模型中匹配到的分组结果

#结果:

hello

()

{}

#有分组

r=re.search(‘h(?P<name>\w+).*k(?P<age>\d+)‘,str)

print(r.group())         #获取匹配到的所有结果

print(r.groups())        # 获取模型中匹配到的分组结果

print(r.groupdict())     # 获取模型中匹配到的分组中所有执行了key的组

#结果:

hello,jack123

(‘ello‘‘123‘)

{‘age‘‘123‘‘name‘‘ello‘}

方法三:findall

findall:获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中多个组,则以列表形式返回,且每一个匹配均是元组;空的匹配也会包含在结果中。

格式:findall(pattern,string,flags=0)

举例说明:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

import re

str=‘123hello,jack123‘

#无分组

= re.findall(‘h\w+‘,str)

print(r)

#结果:

[‘hello‘]

#有分组

r1= re.findall(‘h(\w+)‘,str)

print(r1)

#结果:

[‘ello‘]

方法四:sub

sub:替换匹配成功的指定位置的字符串


1

2

3

4

5

6

#格式:sub(pattern,repl,string,count=0,flags=0)

#pattern:正则模型

#repl   :要替换的字符串或可执行对象

#string :要匹配的字符串

#count  :指定匹配个数

#flags  :匹配模式

举例说明:


1

2

3

4

5

6

7

8

import re

 

str=‘123hello,jack123hello‘

r=re.sub("h\w+",‘456‘,str,1)   #将字符串hello替换成456,后面这个flags=1是匹配到结果后,如果是多个只替换一个,默认是全部替换

print(r)

#结果:

123456,jack123hello

方法五:split

split:根据正则匹配分割字符串


1

2

3

4

5

#格式:split(pattern, string, maxsplit=0, flags=0)

# pattern: 正则模型

# string : 要匹配的字符串

# maxsplit:指定分割个数

# flags  : 匹配模式

举例说明:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import re

str=‘123hello,jack123hello‘

#无分组

r=re.split(‘hello‘,str,1)

print(r)

#结果:

[‘123‘‘,jack123hello‘]

#有分组

r1=re.split(‘(hello)‘,str,1)

print(r1)

r2=re.split(‘(h(ell)o)‘,str,1)    #可以通过括号多切分几层,取到自己满意的结果为止

print(r2)

#结果:

[‘123‘‘hello‘‘,jack123hello‘]

[‘123‘‘hello‘‘ell‘‘,jack123hello‘]


1

2

3

4

5

6

7

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

#结果:

[‘1-2*((60-30+‘‘-40-5‘‘*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))‘]

来自为知笔记(Wiz)

时间: 2024-10-15 11:18:08

python(九)re模块的相关文章

Python基础(九) 模块

今天学习Python中的模块,模块类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个.py文件组成的代码集合就称为模块. 模块分为三种: 自定义模块 第三方模块 内置模块 下面就分别就这三种模块的展开学习: 一.自定义模块 1,定义模块,定义模块的场景有三种: 1 2 3 4 5 场景1.定义的的模块在同一目录下 场景2.定义的模块在同一目录的不

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

python编程常用模块记录

time(时间相关模块) logging(日志模块) [time 模块] 与时间有关还有datetime.calendar等 time模块常用于获取当前系统日期时间,该值可用于日志文件命名或者任何sleep函数让进程挂起. 常用用法: 一.现在需要知道当前时间,转换为字符串: #! /usr/bin/env python #coding=utf-8 import time print time.strftime('%Y-%m-%d %A %X %Z',time.localtime(time.ti

python基础之模块part1

模块: 模块本质上就是一个Python程序. 所有说是对象的,一定可以通过  对象.方法  来实现某些操作. 模块种类: 内置模块 第三方模块 自定义模块 import在查找模块的顺序:内置模块---->第三方模块---->自定义模块. 后期学习网络编程(socket)跟线程进程(threading processing)的时候其实就是在学习这些模块. time: 在Python中时间也是一个类. 时间有三种类型: 时间戳:时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

Python大数据处理模块Pandas

Python大数据处理模块Pandas [这篇转载自CSDNchengxuyuanyonghu的博客:http://blog.csdn.net/chengxuyuanyonghu/article/details/54956207] 目录 读取数据 索引 选择数据 简单运算 import pandas as pd read_csv to_csv 数据框操作 一            创建对象 二            查看数据 三            选择 四            缺失值处理

Python中time模块详解(转)

Python中time模块详解(转) 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Ti

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &

python时间处理模块 datetime time模块 deltetime模块

1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 返回unix时间  常用作两个时间差的计算 b.     time.sleep()  休眠多久,精度为子秒(subsecond) In [90]: t1 = time.time() In [91]: t1 Out[91]: 1461400225.877932 In [92]: time.sleep(

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python