1、正则表达式的概述
(1)概述:正则表达式是一些由字符和特殊符号组成的字符串,他们描述了模式的重复或者表示多个字符,正则表达式能按照某种模式匹配一系列有相似特征的字符串。正则表达式是一种小型的、高度的专业化的编程语言,
(2)Python语言中的正则表达式内嵌在Python中通过re模块实现,正则表达式被编译成一系列的字节码,然后由C编写的匹配引擎执行
2、字符匹配
(1)符号匹配
符号
描述
示例
实例说明
literal
匹配文本字符串的字面值literal
root
匹配字符串root
re1|re2
匹配正则表达式re1或者re2
root|admin
匹配字符串root或者admin
.
匹配除换行外的任意字符
a.c
匹配ac中间有任意一个字符的选项
^
匹配字符串的起始部分
^root
匹配以root开头的结果
$
匹配字符串的结束部分
*sh$
匹配以sh结尾的内容
*
匹配0次或多次前面出现的内容的正则表达式
[a-z]*
匹配0次或多次出现小写字母
+
匹配1次或多次前面出现的内容的正则表达式
[A-Z]+
匹配大写字母至少出现一次
?
匹配0次或1次前面出现的正则表达式
goo?
匹配go或者goo
[…]
匹配来自字符集的任一单一字符
a[0-9]c
匹配ac中间出现一个数字
[..x-y..]
匹配x到y范围中的任一单一字符
[a-zA-Z]
匹配字母
[^…]
不匹配此字符集中出现的任何一个字符,包括某一范围字符
[^A-Za-z0-9]
匹配非字母、数字
{n}
匹配n次前面出现的正则表达式
[0-9]{3}
匹配三个数字
{n,m}
匹配n到m此前面出现的正则表表达式
[0-9]{5,7}
匹配数字出现5到7次
(…)
匹配封闭的正则表达式,然后另存为子组
([0-9]{3}\.)
匹配三个数字+.存为一个组
(2)特殊字符的匹配
符号
描述
示例
\d
匹配任何十进制数字,与[0-9]一致
data\d+.txt
\D
匹配任何非数字
a\D?\.log
\w
匹配任何字母数字字符(\W与之相反)
[A-Za-z]\w+
\s
匹配任何空格字符,与[\n\t\r\v\f]相同,\S功能相反
of\sthe
\b
匹配任何单词边界(\B功能相反)
\bthe\b
\N
匹配以保存的子组N
price:\16
\A(\Z)
匹配字符串的起始(结束)
\ADear
3、Python正则表达式的使用(即re模块的使用)
函数/方法
作用
compile(pattern,flags=0)
使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象
re模块函数和正则表达式对象的方法
match(pattern,string,flags=0)
尝试使用带有可选的标记的正则表达式的模式来匹配字符串,如果匹配成功就返回匹配对象;失败,返回none
search(pattern,string,flags=0)
使用可选标记搜索字符串中第一次出现正则表达式的模式,如果匹配成功则返回匹配对象,失败,返回none
findall(pattern,string[,flags])
查找字符串中所有(非重复)出现的正则表达式模式,如果匹配成功,则返回匹配对象,如果失败,返回none
finditer(patter,string[,flags])
与findall函数相同,但返回的不是一个列表,而是一个迭代器,对于每一次匹配,迭代器都返回一个匹配对象
split(pattern,string,max=0)