python之路——第二块(re模块)
re模块,用于对python的正则表达式的操作。
字符:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
首先,最常用的匹配方法有:
re.match(pattern, string, flags=0) 从起始位置开始根据模型去字符串中匹配指定内容,匹配单个
import re a = re.match("\d","7a1234u123uu888asf123") print(a.group())
结果是7,如果首字符不是数字,会报错,匹配不到
- 正则表达式
- 要匹配的字符串
- 标志位,用于控制正则表达式的匹配方式
re.search(pattern, string, flags=0) 根据模型去字符串中匹配指定内容,匹配单个
import re a = re.search("\d","a1234u123uu888asf123") print(a.group())
结果是1,首字符是字母,也可以匹配得到
re.findall(pattern, string, flags=0) 上述两中方式均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。
import re a = re.findall("\d","a1234u123uu888asf123") print(a)
结果是['1', '2', '3', '4', '1', '2', '3', '8', '8', '8', '1', '2', '3'],以列表的形式输出,不用group。
re.sub(pattern, repl, string, count=0, flags=0) 用于替换匹配的字符串
import re c = "a1234u123uu888asf123" a = re.sub("\d+","DZK",c) print(a)
结果是aDZKuDZKuuDZKasfDZK,将所有匹配到的内容替换成DZK。
re.split(pattern, string, maxsplit=0, flags=0) 根据指定匹配进行分组
content = "1+2+3+4" new_content = re.split('\+', content) print(new_content)
结果是['1', '2', '3', '4'],这里的\是转义符号,根据+号将匹配到的分开
content = "1+2-3*4/5+6" new_content = re.split('[\+\-\*\/]', content) print(new_content)
结果是['1', '2', '3', '4', '5', '6'],这里需要加上括号