python之正则表达式

在程序中我们可以使用正则表达式匹配出符合规则的字符串数据。

正则表达式的元字符:

1.匹配单个字符的元字符:

元字符  功能
. 匹配一个除 外的任意字符
[] 匹配[]中列举出来的字符,只要在[]中存在则匹配成功
d 匹配数字,即0-9
D 匹配非数字,即除0-9之外的所有字符
s 匹配空白,即空格、 、 (回到当前行的行首)、f(分页符)、
S 匹配非空白字符
w 匹配非特殊字符,即0-9、a-z、A-Z,_和汉字
W 匹配特殊字符,除0-9、a-z、A-Z,_和汉字外的字符
 匹配字符串中空格后的第一个非特殊含义的字符

2.匹配多个字符的限定符:

限定符 功能
* 匹配任意一个出现0次或多次的字符
+ 匹配任意一个出现一次或多次的字符,即至少出现1次的字符
匹配一个出现1次或0次的字符
{m} 匹配一个出现m次的字符
{m,} 匹配一个至少出现m次的字符
{m,n} 匹配一个出现次数在m到n之间的字符

3.匹配开头和结尾的元字符:

元字符 功能
^ 匹配以指定字符串开头的字符串
$ 匹配以指定字符串结尾的字符串

4.匹配分组的元字符:

元字符 功能
| 匹配满足|左右两边的任意一个表达式的字符串
() 将括号中的字符作为一个分组
um 通过num引用分组,分组顺序从第一个左括号开始为1,依次递增
(?P<name>) 给分组起一个别名
(?P=name) 通过别名引用分组

5.正则表达式的高阶函数:

方法 功能
match() 从头开始匹配符合规则的字符串
search() 查找第一个符合匹配规则的子串
findall() 查找出所有符合匹配规则的子串
split() 将字符串以指定的匹配规则进行分割,
并返回一个分割后的列表
sub()  通过匹配规则找到字符串中符合规则的子串,
并将子串替换成指定的新字符串

6.正则表达式高阶函数的应用:

1.match()函数从头开始匹配,如果第一个字符不符合规则那么久匹配不到数据,

代码如下:

import re

print(re.match(r'd.', '123124512').group())
print(re.match(r'd*', '123124512').group())
print(re.match(r'd+', '12312').group())
print(re.match(r'D+', '```12312').group())
print(re.match(r'w+', '```12312'))
print(re.match(r'W+', '```12312').group())

2.search()函数从头开始查找出第一个符合规则的子串,

代码如下:

print(re.search(r'[a-zA-Z]+', '1abc2ABC').group())
print(re.search(r'[a-zA-Z]{3}', '1abc2ABC').group())

3.findall()函数从头开始找出所有符合规则的子串,

代码如下:

print(re.findall(r'[a-zA-Z]+', '1abc2ABC3def4DEF'))

4.split()函数将字符串以指定规则进行分割,

代码如下:

print(re.split(r':|.', 'http://www.baidu.com'))

5.sub()函数匹配字符串中符合规则的子串并使用新的字符串进行替换,

代码如下:

print(re.sub(r'[A-D]+', '你好啊', '1anbc2ADC3456'))
该花的钱要花,该吃的饭要吃。
原文地址:https://www.cnblogs.com/chao666/p/12061809.html