Python学习笔记(3)

正则:

使用正则表达式需要引入 re模块 , 使用步骤如下:

compile(正则,模式)  方法:生成pattern实例;模式可传 re.I 或 re.M 等

re.I     不区分大小写,忽略大小写

re.M    多行匹配,影响 ^ 和 $

import re

#定义正则表达式, 编译成Pattern实例
p = re.compile('a.b')
#使用实例,获得匹配结果
test = re.match(p, 'a3b')

print(test.group(0))   # a3b

 

正则表达式字符含义(列举部分,更多查询文档):

 .     表示除了换行符\n 外的任意字符

\     表示转义,改变后面一个字符的原来意义

*     表示前一个字符可以为0个或者多个

+    表示前一个字符至少为1个或者多个

?   表示前一个字符为0个或者1个

^    表示以某个字符开头

$   表示以某个字符结尾

{m, n}   表示匹配次数, 表示最少m次。表示最多n次

[]    表示字符集中任意字符 例如 [123456798]

()    表示分组, 例如 (abc){2}

预定义字符集:

\d :    表示 0 ~ 9

\D : 表示除了 0 ~ 9 的所有字符,非数字

\s : 表示任何空白字符

\S :   表示除了空白字符的任意字符

\w :   表示 [0-9A-Za-z]

\W : 表示除了 [0-9A-Za-z]   即特殊字符

\A:   表示以 某个字符开头,等价于 符号  ^

\Z : 表示以某个

\b :表示单词边界

 

匹配函数: 

match(pattern, string)  方法: 从字符串起始位置开始匹配,如果不是起始位置匹配成功的话,返回none ,如果匹配成功,返回Match 对象

#定义正则表达式, 编译成Pattern实例
p = re.compile('ab')
#使用实例,获得匹配结果
test = re.match(p, 'sabc')

print(test.group())   # none

 search (pattern, string) 方法: 对字符串进行整体匹配,找到第一个匹配的值后返回,后续的不再进行匹配。,返回Match 对象

#定义正则表达式, 编译成Pattern实例
p = re.compile('ab')

test = re.search(p, 'sabcabab')

print(test.group())   # ab

 findall(pattern,string):  以列表形式输出所有匹配的字符串,查找全部,返回列表

import re

#定义正则表达式, 编译成Pattern实例
p = re.compile('ab',re.M)

print(re.findall(p, 'abcdefgab'))   # ['ab', 'ab']

finditer(pattern, string):  已迭代器形式返回所有匹配的字符串,查找全部,返回迭代器

p = re.compile('ab',re.M)
m = re.finditer(p, 'abcdefgab')
print(next(m).group())  # ab

 

sub(pattern, repl, string, count = 0):   根据正则替换字符串中指定字符 ;   repl 表示替换的新字符,string表示要被替换的字符串, count表示替换的次数,不传默认为 0 ,替换全部

import re

text = '1a2a3a4a5a6a7a'
p = re.compile('a')
new = re.sub(p, '', text)
print(new)   #132467 

匹配函数传参:

pattren 表示匹配的正则表达式  ; 

string 表示需要匹配的字符串 ; 

flags 表示标志位,用于控制正则表达式的匹配方式,如 是否区分大小写、多行匹配等;可选

 

Match对象方法:

group()  方法:  返回匹配成功的字符串,不传参或传0 的情况下,返回匹配的所有字符串;当匹配的正则有分组时,依次传参1,2,3输出对应的正则组所匹配的字符

groups() 方法: 以元组形式返回所匹配的各个字符串,以分组形式, 没有分组的情况下返回()

start()   方法:  返回开始匹配的字符位置

end()    方法:   返回结束匹配的字符位置

span()  方法:   以元组形式同时返回开始匹配和结束匹配的位置

p = re.compile('ab')

test = re.search(p, 'sabcabab')

print(test.group())   # ab
print(test.groups())   # ()
print(test.start())   # 1
print(test.end())     # 3
print(test.span())   # (1, 3)
p = re.compile('(ab)(cd)(ef)')

test = re.search(p, 'abcdefg')

print(test.group())   # abcdef
print(test.group(1))   # ab
print(test.group(2))   # cd
print(test.groups())   # ('ab', 'cd', 'ef')
posted @ 2021-01-16 10:04  莫离m  阅读(104)  评论(0编辑  收藏  举报