re模块(正则表达式)

Posted gracenana

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块(正则表达式)相关的知识,希望对你有一定的参考价值。

正则表达式(Regular Experssion)是对字符串操作的一种逻辑公式. 简称regex或re

优点 : 灵活, 功能性强, 逻辑性强

缺点 : 上手难. 

工具 : 各大文本编辑器一般都有正则匹配功能,也可以去http://tool.chinaz.com/regex/进?行行在线测试. 

1. 字符组 [a-zA-Z0-9] 

2. 简单元字符(常用)

.     匹配除换行符以外的任意字符
w    匹配字母或数字或下划线
s    匹配任意空白符
d    匹配数字

    匹配一个换行符
	    匹配一个制表符
    匹配一个单词的结尾
^     匹配字符串的开始
$     匹配字符串的结尾
W    匹配非字母或数字或下划线
D    匹配非数字
S    匹配非空白符
a|b   匹配字符a或字符b
()    匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...]匹配除了字符组中的字符的所有字符

3.量词(一次性匹配多个字符)

*    重复0次或者更多次
+    重复1次或者更多次
?    重复0次或者1次
{n}  重复n次
{n,} 重复n次或者更多次
{n,m}重复n到m次

4.惰性匹配和贪婪匹配

在量词中的 * , + , {} 都属于贪婪匹配.尽可能匹配到多的结果

.*? 则是尽可能少匹配,表示惰性匹配. 例: .*?x 是找到下一个x位置

5.分组       正则中使用()进行分组. 

6. 转义   特殊意义的元字符如 或者s,如果需要匹配对应的字符串,需要对进行转义.由于Python中的特殊字符也需要转义,比较复杂,因此使用 r‘ ‘即可,这是只需要正则表达式内部转义即可r‘\n‘   →  ‘ ‘

re模块

re模块是python提供的一套关于处理正则表达式的模块.核心功能有四个:

1.findall 查找所有.返回list

import re
lst = re.findall(a , happy birthday!!)
print(lst)               #[‘a‘, ‘a‘]
lst = re.findall(rd+ , 5apple6banana)
print(lst)                #[‘5‘, ‘6‘]

2.search 会进行匹配.但如果匹配到了第一个结果,就会返回这个结果.如果匹配不到search返回的则是None

ret = re.search(a,happy birthday!!) #<re.Match object; span=(1, 2), match=‘a‘>
print(ret)  #a

3.match 只能从字符串的开头进行匹配

import re
ret = re.match(a,apply apple).group()
print(ret)   #a

4.finditer 和 findall差不多.只不过返回的是迭代器

import re
it = re.finditer(d , apple6 banana7)
for el in it:
    print(el.group(), end= ) #6 7 

5.其他操作

ret = re.split([ab], qwerafjbcd)  # 先按a分割,再按b分割
print(ret)  # [‘qwer‘, ‘fj‘, ‘cd‘]

ret = re.sub(r"d+", "_a_", "alex250ta")  # 把字符串中的数字换成_a_
print(ret)   #alex_a_ta

ret = re.subn(r"d+", "_a_", "alex250ta")  # 把字符串中的数字换成_a_返回元组包含次数
print(ret)    #(‘alex_a_ta‘, 1)

obj = re.compile(rd{3})    #将这则表达式编译成正则表达式对象
ret = obj.search(abc123eeee)    匹配字符串
print(ret.group())     #123

以上是关于re模块(正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章

第43天python学习re模块学习

常用模块-正则re

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式

python知识-正则表达式re模块

正则表达式