Python的re模块

Python的re模块

1、    compile(pattern):创建模式对象

import re

pat = re.compile(‘A‘)

m = pat.search(‘CBA‘)

#等价于re.search(‘A’,’CBA’)

print(m)

#<_sre.SRE_Match object; span=(2, 3), match=‘A‘>

import re
pat = re.compile(‘a‘)
m = pat.search(‘CBA‘)
print(m)     #没有匹配到,返回None

2、    search(pattern,string):在字符串中寻找模式

import re    
m = re.search(‘asd‘,‘ASDasd‘)      
print(m)     
#<_sre.SRE_Match object; span=(3, 6), match=‘asd‘>       

上面的函数返回都可以在if条件语句中进行判断:

If pat.search(‘asd’,’ASDasd’):

Print(‘ok’)

运行输出了‘ok’。

3、    split(pattern,string):根据模式分割字符串,返回列表

a、

import re
m=re.split(‘,‘,‘a,s,d,asd‘)    #以逗号为分界
print(m)      #[‘a‘, ‘s‘, ‘d‘, ‘asd‘]

b、

import re
pat = re.compile(‘,‘)
m=pat.split(‘a,s,d,asd‘)
print(m)      #[‘a‘, ‘s‘, ‘d‘, ‘asd‘]

c、

import re
m = re.split(‘[,]+‘,‘a,s,d ,,,,,asd‘)
#正则匹配:[,]+,后面说明
print(m)     #[‘a‘, ‘s‘, ‘d ‘, ‘asd‘]

d、

import re
m= re.split(‘[,]+‘,‘a,s,d,e, ,,,,,asd‘,maxsplit=2)
#maxsplit最多分割次数
print(m)   
#[‘a‘, ‘s‘, ‘d,e, ,,,,,asd‘]

e、

import re

pat = re.compile(‘[,]+‘)

m = pat.split(‘a,s,d,e, ,,,,,asd‘,maxsplit=2)

print(m)   # [‘a‘, ‘s‘, ‘d,e, ,,,,,asd‘]

4、    findall(pattern,string):列表形式返回匹配项

import re

c=re.findall(‘a‘,‘aASDaDSDa‘)

print(c)         # [‘a‘, ‘a‘, ‘a‘]

import re

pat = re.compile(‘a‘)

c = pat.findall(‘aASDaDSDa‘)

print(c)         # [‘a‘, ‘a‘, ‘a‘]

import re

pat = re.compile(‘[A-Z]+‘)

c = pat.findall(‘aASDaDSDa‘)

print(c)         # [‘ASD‘, ‘DSD‘]

import re

pat = re.compile(‘[A-Z]‘)

c = pat.findall(‘aASDaDSDa‘)

print(c)         # [‘A‘, ‘S‘, ‘D‘, ‘D‘, ‘S‘, ‘D‘]

import re

pat = re.compile(‘[A-Za-z]+‘)

#正则匹配:‘[A-Za-z]+‘匹配所有单词

c = pat.findall(‘aASD aDSDa‘)

print(c)         # [‘aASD‘, ‘aDSDa‘]

import re

pat = re.compile(‘[A-Za-z]‘)

c = pat.findall(‘aASD aDSDa‘)

print(c)

#[‘a‘, ‘A‘, ‘S‘, ‘D‘, ‘a‘, ‘D‘, ‘S‘, ‘D‘, ‘a‘]

5、    sub(pat,repl,string):用repl替换pat匹配项

import re

c = re.sub(‘a‘,‘A‘,‘aASD aDSDa‘)

print(c)   #AASD ADSDA

import re

pat = re.compile(‘a‘)

c = pat.sub(‘A‘,‘aASD aDSDa‘)

print(c)         # AASD ADSDA

import re

pat = re.compile(r‘www\.(.*)\..{3}‘)

‘‘‘

Pythonstring前面加上‘r’,是为了告诉编辑器这个stringraw string,不要转译反斜杠‘\’。

例如,\nraw string中,是两个字符,\n,而不会转译为换行符。

由于正则表达式和\会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上‘r’。

于大多数编程语言相同,正则表达式里用“\”作为转义字符,这就可能造成反斜杠困扰。

假如你需要匹配文本中的字符“\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠“\\\\:

前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r\\”表示。

同样,匹配一个数字的\\d可以写成r\d”。

有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

最好记住这句话:

当一个字符串使用了正则表达式后,最好在前面加上‘r’,这样你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观

‘‘‘

ret = pat.match(‘www.dxy.com‘).group(1)

print(ret)       # dxy

a=re.sub(r‘www\.(.*)\..{3}‘,r‘\1‘,‘hello,www.dxy.com‘)

print(a)         # hello,dxy

b = pat.sub(r‘\1‘,‘hello,www.dxy.com‘)

print(b)        # hello,dxy

‘‘‘

r‘\1是第一组的意思

通过正则匹配找到符合规则的“www.dxy.com”,取得组1字符串去替换整个匹配

‘‘‘

 

pat = re.compile(r‘(\w+)(\w+)‘)

s = ‘hello world! hello hz!‘

d = pat.findall(‘hello world ! hello hz !‘)

print(d)

# [(‘hell‘, ‘o‘), (‘worl‘, ‘d‘), (‘hell‘, ‘o‘), (‘h‘, ‘z‘)]

c=pat.sub(r‘\2\1‘,s)

print(c)   # ohell dworl! ohell zh!

‘‘‘

通过正则得到组1hell),组2o),再通过sub去替换。即组1替换组2,组2替换组1,调换位置

‘‘‘

6、    escape(string):对字符串里面的特殊字符串进行转义

import re

a=re.escape(‘www.dxy.com‘)

print(a)   #www\.dxy\.com

7、group:获取子模式(组)的匹配项

上面的函数中,只有match、search有group方法,其他的函数没有。

import re

pat = re.compile(r‘www\.(.*)\.(.*)‘)

#用()表示1个组,2个组

m = pat.match(‘www.dxy.com‘)

print(m.group())

#默认为0,表示匹配整个字符串。结果:www.dxy.com

print(m.group(1))

#返回给定组1匹配的字符串。结果:dxy

print(m.group(2))

#返回给定组2匹配的字符串。结果:com

8、    start:给定组匹配项的开始位置

import re

pat = re.compile(r‘www\.(.*)\.(.*)‘)

m = pat.match(‘www.dxy.com‘)

print(m.start(2)) #组2开始的索引,结果:8

9、end:给定组匹配项的结束位置

import re

pat = re.compile(r‘www\.(.*)\.(.*)‘)

m = pat.match(‘www.dxy.com‘)

print(m.end(2))  #组2结束的索引。结果:11

10、span:给定组匹配项的开始结束位置

import re

pat = re.compile(r‘www\.(.*)\.(.*)‘)

m = pat.match(‘www.dxy.com‘)

print(m.span(2))

#组2的开始、结束的索引。结果为(8,11)

 

时间: 2024-10-13 15:12:45

Python的re模块的相关文章

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

Python 利用pytesser模块识别图像文字

使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the Tesseract engine from Google.是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本(主要是英文). 1.pytesser安装 使用设备:win8 64位 PyTesser使用Tesseract OCR引擎,将图像转换到可接受的格式,然后执行tesseract提取出文

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

Python中time模块详解

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

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并

定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

1 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) 2 import urllib.request 3 4 def get_page(url): 5 response = urllib.request.urlopen(url) 6 html = response.read() 7 return html 8 9 print(get_page(url='https://www.baidu,com'))

python之OS模块(对文件or目录操作)

OS模块 os,语义为操作系统,包含普遍的操作系统功能,与具体的平台无关.python编程时,处理文件和目录这些操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小-- os模块不受平台限制,也就是说:当我们要在linux中显示当前命令时就要用到pwd命令,而Windows中cmd命令行下就要用到这个,例如:这时候我们使用python中os模块的os.path.abspath(name)功能,甭管是linux或者Windows都可以获取当前的绝对路径. 常见函数列表 os.name

Python 安装pexpect模块

安装Python 下载pexpect模块:https://pypi.python.org/pypi/pexpect/#downloads 解压后在目录下运行:python ./setup.py install (必须是root权限) 如果没有使用root权限,你只需要把lib的路径放入sys.path,这样便可以使用pexpect import syssys.path.append('pexpect-4.2.1/build/lib') 确认是否安装成功 >>>import pexpect