正则表达式通用
python正则表达式,依赖python中 re 模块
re模块python 自带不用安装
import re # 使用前得导入模块
1. match () 函数
# 从起始位置开始匹配
re.match ( pattern, string, flags=0)
# 返回对象, group() 取值
参数:
-
patter : 匹配的正则表达式
-
string : 要匹配的字符串
-
flags: 标志位, 用于控制正则表达式匹配的方式————》换行,大小写匹配
-
re.I 忽略大小写
-
re.L 做本地用户识别
-
re.M 多行匹配,影响 ^ 和 $
-
re.S 使 . 匹配包括换行符在内的所有字符 ----》 . 可以匹配到
-
re.U 根据Unicode 字符集解析字符 ,影响 w W B
-
re.X 使我们以便灵活的格式理解表达式
-
2. serch () 函数
# 匹配整个字符串, 并返回第一个匹配成功的元素
re.serch ( pattern, string, flags=0 )
# 返回对象, group() 取值
参数:
- patter : 匹配的正则表达式
- string : 要匹配的字符串
- flags: 标志位, 用于控制正则表达式匹配的方式————》换行,大小写匹配
3. findall () 函数 ------- 常用
# 匹配整个字符串,并返回匹配到的所有数据,返回列表
re.findall ( pattern, string, flags=0 )
# 返回列表, 取值 [下标]
参数:
- patter : 匹配的正则表达式
- string : 要匹配的字符串
- flags: 标志位, 用于控制正则表达式匹配的方式————》换行,大小写匹配
4. compile () 函数
# 编译正则表达式,生成一个 Pattern 对象
re.compile( 正则表达式 , flags=0)
# 用法
pattern = re.compile(r'd+')
# 用编译后的正则表达式去调用方法, 在str 中匹配
s = pattern.match( str )
在上面,我们已将一个正则表达式编译成 Pattern 对象,接下来,我们就可以利用 pattern 的一系列方法对文本进行匹配查找了。
Pattern 对象的一些常用方法主要有:
- match 方法:从起始位置开始查找,一次匹配
- search 方法:从任何位置开始查找,一次匹配
- findall 方法:全部匹配,返回列表
- finditer 方法:全部匹配,返回迭代器
- split 方法:分割字符串,返回列表
- sub 方法:替换
5. split () 函数
# split 方法按照能够匹配的子串将字符串分割后 返回列表
re.split( pattern , maxsplit = 最大)
参数:
- patter : 匹配的正则表达式
- maxsplit : 用于指定最大分割次数,不指定将全部分割。
6 . sub () 函数
# 用于替换
re.sub( pattern, repl, string, count=0, flags=0)
# re.sub( 旧字符串, 新字符串,在string中匹配, 最大替换次数, 标志位)
参数:
-
pattern : 可以是一个字符串也可以是一个正则,用于匹配要替换的字符
-
repl : 将会被替换的值,repl可以是字符串也可以是一个方法
-
string : 范围,在什么里面匹配
-
count :用于指定最多替换次数,不指定时全部替换。
-
flags : 标志位, 用于控制正则表达式匹配的方式————》换行,大小写匹配
7. 匹配中文
在某些情况下,我们想匹配文本中的汉字,有一点需要注意的是,
中文的 unicode 编码范围 主要在 [u4e00-u9fa5],
这里说主要是因为这个范围并不完整,比如没有包括全角(中文)标点,不过,在大部分情况下,应该是够用的。
假设现在想把字符串 title = u'你好,hello,世界' 中的中文提取出来,可以这么做:
import re
title = '你好,hello,世界'
pattern = re.compile(r'[u4e00-u9fa5]+')
result = pattern.findall(title)
print (result)
注意到,我们在正则表达式前面加上了两个前缀 ur,其中 r 表示使用原始字符串,u 表示是 unicode 字符串。