Python正则表达式学习摘要及资料
admin
2023-07-31 00:46:34
0

摘要

  • 在正则表达式中,如果直接给出字符,就是精确匹配。
  • {m,n}? 对于前一个字符重复 m n 次,并且取尽可能少的情况 在字符串\'aaaaaa\'中,a{2,4} 会匹配 4 个 a,但 a{2,4}? 只匹配 2 个 a

^表示行的开头,^\\d表示必须以数字开头。

$表示行的结束,\\d$表示必须以数字结束。

你可能注意到了,py也可以匹配\'python\'–>py;
但是加上^py$就变成了整行匹配,就只能匹配’py’了,匹配\'python\'时,就什么也得不到。

参考表

正则表达式特殊序列

re模块

re.compile(pattern[, flags])
把正则表达式的模式和标识转化成正则表达式对象,供 match() search() 这两个函数使用。

re 所定义的 flag 包括:

123456 re.I 忽略大小写re.L 表示特殊字符集 \\w, \\W, \\b, \\B, \\s, \\S 依赖于当前环境re.M 多行模式re.S 即为’ . ’并且包括换行符在内的任意字符(’ . ’不包括换行符)re.U 表示特殊字符集 \\w, \\W, \\b, \\B, \\d, \\D, \\s, \\S 依赖于 Unicode 字符属性数据库re.X 为了增加可读性,忽略空格和’ # ’后面的注释

以下两种用法结果相同:
(A)

12 compiled_pattern = re.compile(pattern) result = compiled_pattern.match(string)

(B)

1 result = re.match(pattern, string)

123 s = \’ABC\\\\-001\’ # Python的字符串 #对应的正则表达式字符串变成: #\’ABC\\-001\’

因此我们强烈建议使用Python的r前缀,就不用考虑转义的问题了

123 s = r\’ABC\\-001\’ # Python的字符串# 对应的正则表达式字符串不变:# \’ABC\\-001\’

re.search(pattern, string[, flags])
在字符串中查找匹配正则表达式模式的位置,返回 MatchObject 的实例,如果没有找到匹配的位置,则返回 None
对于已编译的正则表达式对象来说(re.RegexObject),有以下 search 的方法:
search (string[, pos[, endpos]])
regex 是已编译好的正则表达式对象,regex.search(string, 0, 50) 等同于 regex.search(string[:50], 0)

123 >>> pattern = re.compile(\”a\”) >>> pattern.search(\”abcde\”)     # Match at index 0 >>> pattern.search(\”abcde\”, 1)  # No match;

match

re.match(pattern, string[, flags])
判断 pattern 是否在字符串开头位置匹配。对于 RegexObject,有:
match(string[, pos[, endpos]])
match() 函数只在字符串的开始位置尝试匹配正则表达式,也就是只报告从位置 0 开始的匹配情况,而 search() 函数是扫描整个字符串来查找匹配。如果想要搜索整个字符串来寻找匹配,应当用 search()。

12 >>> pattern.match(\’bca\’,2).group()\’a\’

虽然,match默认是从开头匹配,但是,如果指定位置,仍然能成功;但是!match也是从指定位置开始匹配,不匹配仍然会失败,这一点就和search有区别啦。

match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

12345 test = \’用户输入的字符串\’if re.match(r\’正则表达式\’, test):    print(\’ok\’)else:    print(\’failed\’)

split

re.split(pattern, string[, maxsplit=0, flags=0])
此功能很常用,可以将将字符串匹配正则表达式的部分割开并返回一个列表。对 RegexObject,有函数:
split(string[, maxsplit=0])

对于一个找不到匹配的字符串而言,split 不会对其作出分割


ode>中,a{2,4} 会匹配 4 个 a,但 a{2,4}? 只匹配 2 个 a

^表示行的开头,^\\d表示必须以数字开头。

$表示行的结束,\\d$表示必须以数字结束。

你可能注意到了,py也可以匹配\'python\'–>py;
但是加上^py$就变成了整行匹配,就只能匹配’py’了,匹配\'python\'时,就什么也得不到。

参考表

正则表达式特殊序列

re模块

re.compile(pattern[, flags])
把正则表达式的模式和标识转化成正则表达式对象,供 match() search() 这两个函数使用。

re 所定义的 flag 包括:

123456 re.I 忽略大小写re.L 表示特殊字符集 \\w, \\W, \\b, \\B, \\s, \\S 依赖于当前环境re.M 多行模式re.S 即为’ . ’并且包括换行符在内的任意字符(’ . ’不包括换行符)re.U 表示特殊字符集 \\w, \\W, \\b, \\B, \\d, \\D, \\s, \\S 依赖于 Unicode 字符属性数据库re.X 为了增加可读性,忽略空格和’ # ’后面的注释

以下两种用法结果相同:
(A)

12 compiled_pattern = re.compile(pattern) result = compiled_pattern.match(string)

(B)

1 result = re.match(pattern, string)

123 s = \’ABC\\\\-001\’ # Python的字符串 #对应的正则表达式字符串变成: #\’ABC\\-001\’

因此我们强烈建议使用Python的r前缀,就不用考虑转义的问题了

123 s = r\’ABC\\-001\’ # Python的字符串# 对应的正则表达式字符串不变:# \’ABC\\-001\’

re.search(pattern, string[, flags])
在字符串中查找匹配正则表达式模式的位置,返回 MatchObject 的实例,如果没有找到匹配的位置,则返回 None
对于已编译的正则表达式对象来说(re.RegexObject),有以下 search 的方法:
search (string[, pos[, endpos]])
regex 是已编译好的正则表达式对象,regex.search(string, 0, 50) 等同于 regex.search(string[:50], 0)

123 >>> pattern = re.compile(\”a\”) >>> pattern.search(\”abcde\”)     # Match at index 0 >>> pattern.search(\”abcde\”, 1)  # No match;

match

re.match(pattern, string[, flags])
判断 pattern 是否在字符串开头位置匹配。对于 RegexObject,有:
match(string[, pos[, endpos]])
match() 函数只在字符串的开始位置尝试匹配正则表达式,也就是只报告从位置 0 开始的匹配情况,而 search() 函数是扫描整个字符串来查找匹配。如果想要搜索整个字符串来寻找匹配,应当用 search()。

12 >>> pattern.match(\’bca\’,2).group()\’a\’

虽然,match默认是从开头匹配,但是,如果指定位置,仍然能成功;但是!match也是从指定位置开始匹配,不匹配仍然会失败,这一点就和search有区别啦。

match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

12345 test = \’用户输入的字符串\’if re.match(r\’正则表达式\’, test):    print(\’ok\’)else:    print(\’failed\’)

split

re.split(pattern, string[, maxsplit=0, flags=0])
此功能很常用,可以将将字符串匹配正则表达式的部分割开并返回一个列表。对 RegexObject,有函数:
split(string[, maxsplit=0])

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...