最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python 标准库之 re [正则表达式操作]

XAMPP案例 admin 285浏览 0评论

00Python

re 库的两种对象

Pattern :正则表达式对象 Match :匹配对象

常用内容

search

匹配字符串的第一个位置

In [1]: import re

In [2]: s = "I am a simple string"

In [3]: r = re.search("am", s)

In [4]: r
Out[4]: <re.Match object; span=(2, 4), match='am'>

In [5]: r.span()
Out[5]: (2, 4)

In [7]: r.group()
Out[7]: 'am'

match

从字符串开始的位置匹配

In [1]: import re

In [2]: s = "I am a simple string"

In [3]: r = re.match("I", s)

In [4]: r
Out[4]: <re.Match object; span=(0, 1), match='I'>

In [5]: r.span()
Out[5]: (0, 1)

In [6]: r.group()
Out[6]: 'I'

In [7]: r = re.match("am", s)

In [8]: print(r)
None

findall

匹配所有的字串并返回一个匹配列表

In [1]: import re

In [2]: s = "Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24)"

In [3]: re.findall(r"\d+", s)
Out[3]: ['3', '8', '1', '3', '8', '1', '1', '293', '6', '18', '2019', '22', '39', '24']

finditer

返回为一个元素未匹配对象的迭代器

In [1]: import re

In [2]: s = "Python 3.8.1"

In [3]: r =  re.finditer(r"\d+", s)

In [4]: r
Out[4]: <callable_iterator at 0x56022f8>

In [5]: for i in r:
    ...:     print(i)
    ...:     print(i.group())
    ...:
    ...:
<re.Match object; span=(7, 8), match='3'>
3
<re.Match object; span=(9, 10), match='8'>
8
<re.Match object; span=(11, 12), match='1'>
1

sub

替换匹配到的字串

In [1]: import re

In [2]: s = "I am a simple string"

In [3]: re.sub("s\w*", "python", s)
Out[3]: 'I am a python python'

compile

将正则表达式编译为一个 正则表达式对象,用于多次匹配

In [1]: import re

In [2]: pattern = r"\d+"

In [3]: p = re.compile(pattern)

In [4]: r = p.findall("abc123 k23 77")

In [5]: r
Out[5]: ['123', '23', '77']

In [6]: r = p.findall("1.2@12*g00")

In [7]: r
Out[7]: ['1', '2', '12', '00']

速查表

函数参数说明

参数 功能
pattern 匹配的正则表达式
string 要匹配的字符串
flags 标志位,用于控制正则表达式的匹配方式
maxsplit 分隔次数,默认为 0,不限制次数
pos 可选参数,指定字符串的起始位置,默认为 0。
endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。
repl 替换的字符串,也可为一个函数
count 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

标志常量

标志 功能
re.A
re.ASCII
让 \w, \W, \b, \B, \d, \D, \s 和 \S 只匹配ASCII
re.DEBUG 显示编译时的debug信息,没有内联标记
re.I
re.IGNORECASE
忽略大小写匹配
re.L
re.LOCALE
由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配 (?i)
re.M
re.MULTILINE
多行匹配  (?m)
re.S
re.DOTALL
让 ‘.’ 特殊字符匹配任何字符,包括换行符 (?s)
re.X
re.VERBOSE
这个标记允许你编写更具可读性更友好的正则表达式,空白符号会被忽略,除非在一个字符集合当中或者由反斜杠转义,或者在 *?,(?: 或 (?P<…> 分组之内

函数

函数 功能
re.compile(pattern, flags=0) 将正则表达式的样式编译为一个 正则表达式对象
re.search(pattern, string, flags=0) 扫描整个 string 找到匹配样式的第一个位置,并返回一个相应的匹配对象。如果没有匹配,返回 None
re.match(pattern, string, flags=0) 从 string 的起始位置匹配一个正则表达式样式,匹配就返回一个相应的匹配对象 。如果没有匹配,返回 None
re.fullmatch(pattern, string, flags=0) 如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象 。否则返回 None
re.split(pattern, string, maxsplit=0, flags=0) 用 pattern 切分 string
re.findall(pattern, string, flags=0) 在 string中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
re.finditer(pattern, string, flags=0) 在 string中找到正则表达式所匹配的所有子串,并返回一个迭代器
re.sub(pattern, repl, string, count=0, flags=0) 使用 repl 替换字符串中的匹配项
re.subn(pattern, repl, string, count=0, flags=0) 行为与  sub() 相同,但是返回一个元组
re.escape(pattern) 转义 pattern 中的特殊字符
re.purge() 清除正则表达式缓存

正则表达式对象(Pattern)

方法

方法 功能
search(string[, pos[, endpos]]) 扫描整个 string 找到匹配样式的第一个位置,并返回一个相应的匹配对象。如果没有匹配,返回 None
match(string[, pos[, endpos]]) 从 string 的起始位置匹配一个正则表达式样式,匹配就返回一个相应的匹配对象 。如果没有匹配,返回 None
fullmatch(string[, pos[, endpos]]) 如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象 。否则返回 None
split(string, maxsplit=0) 等价于 split() 函数
finditer(string[, pos[, endpos]]) 在 string中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
sub(repl, string, count=0) 等价于 sub() 函数
subn(repl, string, count=0) 等价于 subn() 函数

属性

属性 功能
flags 正则匹配标记
groups 捕获组合的数量
groupindex 映射由 (?P<id>) 定义的命名符号组合和数字组合的字典
pattern 编译对象的原始样式字符串

匹配对象(Match)

方法

方法 功能
expand(template) 对 template 进行反斜杠转义替换并且返回,就像sub() 方法中一样
group([group1, ...]) 返回一个或者多个匹配的子组
__getitem__(g) 等价于 m.group(g)
groups(default=None) 返回一个元组,包含所有匹配的子组,在样式中出现的从1到任意多的组合
groupdict(default=None) 返回一个字典,包含了所有的 命名 子组
start([group])
end([group])
返回 group 匹配到的字串的开始和结束标号
span([group]) 返回一个二元组包含匹配 (开始,结束) 的位置 (m.start(group), m.end(group))

属性

属性 功能
pos pos 的值
endpos endpos 的值
lastindex 最后匹配的捕获组的整数索引,如果没有匹配产生返回 None
lastgroup 最后匹配的捕获组的名称,如果没有匹配产生返回 None
re 返回产生这个实例的 正则对象 ,这个实例是由正则对象的 match() 或 search() 方法产生的
string 传递到 match() 或 search() 的字符串

转载请注明:XAMPP中文组官网 » Python 标准库之 re [正则表达式操作]

您必须 登录 才能发表评论!