re模块

Python自带了匹配字符串的模块re,我们可以通过该模块对字符串进行(模糊)匹配,提取出我们需要的内容。

的。正则表达式是一种特殊的字符序列,它能帮助我们去检查字符串是否与某种模式相匹配

常用方法

1、re.compile(pattern, flags=0)

将正则表达式编译成正则对象,搭配match、search、findall等等进行匹配。

# 内置模块

import os

import sys

# 第三方模块

import flask

# 本地模块

from foo import bar



2、re.match(pattern, string, flags=0)

从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

# 内置模块

import os

import sys

# 第三方模块

import flask

# 本地模块

from foo import bar




3、re.search(pattern, string, flags=0)

扫描整个字符串,返回第一个成功的匹配,如果匹配失败,返回None。

# 内置模块

import os

import sys

# 第三方模块

import flask

# 本地模块

from foo import bar




4、re.findall(pattern, string, flags=0)

以string列表形式返回string中pattern的所有非重叠匹配项。从左到右扫描该字符串,并以找到的顺序返回匹配项。如果该模式中存在一个或多个组,则返回一个组列表;否则,返回一个列表。如果模式包含多个组,则这将是一个元组列表。空匹配项包含在结果中。

import re

# 匹配包含所有带有o的单次

r= re.findall('\wo\w+', 'how are you')

print(r) # ['how', 'you']

# * 前的字符可以是0个或者多个。返回list

r = re.findall('好*', '你好吗?我很好。你好才是真的好。你好好了')

print(r) # ['', '好', '', '', '', '', '好', '', '', '好', '', '', '', '', '好', '', '', '好好', '', '']

r = re.findall('你好*', '你好吗?我很好。你好才是真的好。你好好了')

print(r) # ['你好', '你好', '你好好']

# + 用于匹配字符一次或者多次

r = re.findall('好+', '你好吗?我很好。你好才是真的好。你好好了')

print(r) # ['好', '好', '好', '好', '好好']

r = re.findall('你好+', '你好吗?我很好。你好才是真的好。你好好了')

print(r) # ['你好', '你好', '你好好']

# $ 用来匹配结尾

r = re.findall('测试$', '测试小姐姐还没对象')

print(r) # []

r = re.findall('测试$', '小姐姐我的代码还没测试')

print(r) # ['测试']

# ^ 用来匹配开始

r = re.findall('^小姐姐', '小姐姐我的代码还没测试')

print(r) # ['小姐姐']

# ^ 用于字符集中表示取反

# 匹配所有除字母外的字符

r = re.findall('[^a-z]', '123abcde789')

print(r) # ['1', '2', '3', '7', '8', '9']
—





5、re.split(pattern, string, maxsplit=0, flags=0)

split能够按照所能匹配的字串将字符串进行切分,返回切分后的字符串列表

import re

# 按照;或者, 对字符串进行分割

r = re.split('[;,]', 'abc,qwer; opq, mn')

print(r) # ['abc', 'qwer', ' opq', ' mn']




以上仅演示了部分正则的语法,更多正则语法 可以参考下表。

python正则匹配文件内容 python re正则匹配_正则表达式