第三章 正则表达式
- 正则表达式是一个特殊的字符序列,可以用于搜索、替换和解析字符串。
3.5.1 正则表达式元字符
-
正则表达式右普通字符和元字符组成。普通字符表示自身;元字符有特殊含义
-
数量限定符
元字符 描述 示例 * 匹配前面 0 个或多个字符 使用"ab*"可匹配到"a"、"b"、"abc"等 ? 匹配前面 0 个或 1 个字符 使用"ab?"可匹配到"a"或"ab",但不可匹配"abb" + 匹配前面 1 个或多个字符 使用"ab+"可匹配到"ab"、"abb"等 {n} 匹配前面字符 n 次 使用"ab{3}"可匹配到"abbb",但不可匹配"ab"或"abb" {n,} 匹配前面字符至少 n 次 使用"ab{3,}"可匹配"abbb"或"abbbbb",但不可匹配"ab"或"abb" {n,m} 匹配前面字符 n 到 m 次 使用"ab{3,4}可匹配"abbb"或"abbbb",但不可匹配"ab"或"abb" -
字符限定符
元字符 描述 示例 [] 匹配字符集内任意一个元素 使用"[abcd]"可匹配"a"、"b"或"c" [^] 匹配字符集外的任一字符 使用"[ ^abcd]"可匹配任一非 abcd 的字符 [-] 匹配字符集内的任一字符(包括未列出的字符) 使用"[a-z]"可匹配任一小写字母的字符,如"g"、"h" [^-] 匹配字符集外任一字符(包括未列出的字符) 使用"[ ^ a-z]"可匹配任一非小写字母的字符 \d 匹配任一数字字符,等价于[0-9] \D 匹配任一非数字字符,等价于[ ^0-9] \w 匹配任一数字字母字符,等价于[0-9A-Za-z] \W 匹配任一非数字字母字符,等价于[ ^ 0-9A-Za-z] \s 匹配任一空白字符,等价于[\t\n\r\f] \S 匹配任一非空白字符,等价于[ ^ \t\n\r\f] . 匹配换行符(\n)之外的任一字符 -
定位符
元字符 描述 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 /b 匹配一个单词边界,也就是指单词和空格间的位置 /B 匹配非单词边界 -
其他常用元字符
元字符 作用 例子 圆括号"( )" 作为分组符使用,将括号中的内容定义为一个组并将该表达式的字符保存到一个临时区域。 "(ab){3}"可以匹配"ababab" 竖线"|" 作为选择匹配符使用,用来对两个匹配条件进行逻辑或运算。 "com|net|org"可以匹配"com"、"net"或"org" 反斜杠" \ " 作为转义符使用 "\n"用于匹配换行符," \ \ "用于匹配反斜杠
3.5.2 正则表达式处理函数
- 在Python中,正则表达式功能通过正则表达式模块(re模块)来实现。
3.5.2.1 创建正则表达式
-
使用
compile()
函数创建正则表达式-
功能:是将字符串形式的正则表达式转换为正则表达式对象。
-
使用:使用前需要导入 re 模块
-
语法格式:
compile(pattern[,flags])
-
pattern为字符串,表示要匹配的正则表达式模式
flags是可选项,用于设置匹配选项标志(例如是否区别大小写,多行匹配等)
-
-
3.5.2.2 搜索字符串
-
在没有创建正则表达式对象的前提下,可通过 re 模块的函数对字符串进行匹配和搜索
-
re.match()
:从字符串的起始位置对字符串匹配-
语法格式:
re.match(pattern,string[,flags])
string指定要匹配的字符串
flags是可选项,为标志位,例如是否区别大小写,多行匹配等。
-
匹配成功后,返回一个匹配的match对象;否则返回None。
-
调用 match ( )函数后,可以使用匹配对象的 group(num) 或 groups( ) 方法来获取匹配表达式。
- group(num)可以匹配整个表达式的字符串,可以一次输入多个组号,在这个情况下它将返回一个这些组号所对应的元组;
- groups( )则返回一个包含所有小组字符串的元组。
-
-
re.search()
:扫描整个字符串并返回第一个成功的匹配。-
语法格式:
re.search(pattern,string[,flags])
- 如果匹配成功,则返回一匹配的对象,否则返回None。
-
-
re.fandall()
:搜索字符串并以列表形式返回全部能匹配正则表达式的子串-
语法格式:
re.fandall(pattern,string[,flags])
-