python——正则表达式(re模块)

简介: python——正则表达式(re模块)

re 模块

模块内容

re 模块几乎包含了正则表达式的所有功能,我们先来看一下该模块的主要方法。

re.compile(pattern, flags=0)

用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 这两个函数使用。参数说明如下:

  • pattern : 一个字符串形式的正则表达式
  • flags : 匹配模式,包括如下:
参数  说明
re.A  让 \w, \W, \b, \B, \d, \D, \s, \S 只匹配 ASCII
re.I  忽略大小写
re.M  多行模式
re.L  由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配
re.S  . 匹配包括换行符在内的任意字符
re.U  在 Python3 中是冗余的,因为 Python3 中字符串已经默认为 Unicode
re.X  忽略空格和 # 后面的注释

看一下示例:

import re
re.compile(r'abc', re.I)

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


扫描整个字符串找到匹配样式的第一个位置,并返回一个相应的匹配对象;如果没有匹配,就返回一个 None。参数说明如下:


pattern:匹配的正则表达式


string:要匹配的字符串


flags:匹配模式


看一下示例:

import re
print(re.search(r'abc', 'abcef'))
print(re.search(r'abc', 'aBcef'))

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

如果 string 开始的 0 或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象;如果没有匹配,就返回 None。看下示例:

import re
print(re.match(r'abc', 'abcef'))

re.fullmatch(pattern, string, flags=0)

如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象;否则就返回一个 None。看一下示例:

import re
print(re.fullmatch(r'abc', 'abcef'))
print(re.fullmatch(r'abc', 'abc'))

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


用 pattern 分开 string,如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里,如果 maxsplit 非零,最多进行 maxsplit 次分隔,剩下的字符全部返回到列表的最后一个元素。看一下示例:

import re
print(re.split(r'\W+', 'ityard, ityard, ityard.'))
print(re.split(r'(\W+)', 'ityard, ityard, ityard.'))
print(re.split(r'\W+', 'ityard, ityard, ityard.', 1))
print(re.split('[a-f]+', '1A2b3', flags=re.IGNORECASE))

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

对 string 返回一个不重复的 pattern 的匹配列表,string 从左到右进行扫描,匹配按找到的顺序返回,如果样式里存在一到多个组,就返回一个组合列表,空匹配也会包含在结果里。看一下示例:

import re
print(re.findall(r'ab', 'abefabdeab'))

re.finditer(pattern, string, flags=0)

pattern 在 string 里所有的非重复匹配,返回为一个迭代器 iterator 保存了匹配对象,string 从左到右扫描,匹配按顺序排列。看一下示例:

import re
it = re.finditer(r'\d+', '12ab34cd56')
for match in it:
    print(match)

re.sub(pattern, repl, string, count=0, flags=0)

返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串,count 表示匹配后替换的最大次数,默认 0 表示替换所有的匹配。看一下示例:

import re
str = 'ityard # 是我的名字'
print(re.sub(r'#.*$', '', str))

re.subn(pattern, repl, string, count=0, flags=0)

行为与 re.sub() 相同,但返回的是一个元组。看一下示例:

import re
str = 'ityard # 是我的名字'
print(re.subn(r'#.*$', '', str))

re.escape(pattern)

转义 pattern 中的特殊字符。看一下示例:

import re
print(re.escape('https://blog.csdn.net/ityard'))

re.purge()

清除正则表达式缓存。

相关文章
|
6天前
|
JSON API 数据格式
30天拿下Python之requests模块
30天拿下Python之requests模块
18 7
|
5天前
|
人工智能 数据可视化 搜索推荐
Python异常模块与包
Python异常模块与包
|
6天前
|
开发者 Python
30天拿下Python之模块和包
30天拿下Python之模块和包
|
5天前
|
Linux Python Windows
一个Python模块Pendulum的问题
一个Python模块Pendulum的问题
11 0
|
6天前
|
API Python
30天拿下Python之matplotlib模块
30天拿下Python之matplotlib模块
|
6天前
|
SQL 数据处理 数据库
30天拿下Python之pandas模块
30天拿下Python之pandas模块
|
6天前
|
存储 索引 Python
30天拿下Python之numpy模块
30天拿下Python之numpy模块
10 0
|
6天前
|
开发者 Python
30天拿下Python之logging模块
30天拿下Python之logging模块
|
6天前
|
安全 索引 Python
30天拿下Python之collections模块
30天拿下Python之collections模块
|
6天前
|
SQL 数据库连接 数据库
30天拿下Python之sqlite3模块
30天拿下Python之sqlite3模块
下一篇
无影云桌面