《Python核心编程》读书笔记(正则表达式)

前端之家收集整理的这篇文章主要介绍了《Python核心编程》读书笔记(正则表达式)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式(RE):由字符和特殊符号组成的字符串

常见的符号和字符

记号                    说明                                  样例
literal           匹配字符串的值                            foo 
rel1 **|** rel2   匹配正则表达式rel1或rel2                 foo|bar
 .                匹配任何字符(换行符除外)                     b.b  
 (1):
^                 匹配字符串的开始                           ^Dear
$                 匹配字符串的结尾                           /bin/*sh$

(2):
*                 匹配前面出现的正则表达式零次或多次            [A-Za-z0-9]
+                匹配前面出现的正则表达式一次或多次             [a-z]+\.com
?                匹配前面出现的正则表达式零次或一次                 goo?
{N}               匹配前面出现的正则表达式N次                   [0-9]{3}
{M,N}           匹配重复出现M次到N次的正则表达式               [0-9]{3,5}

[...]            匹配字符组里出现的任意一个字符              [aeIoU]
[..x-y..]       匹配从字符x到y中的任意一个字符              [0-9],[A-Za-z]
[^...]          不匹配此字符集中出现的任何一个字符        [^aeIoU],[^A-Za-z]
\c          逐一匹配特殊字符c(即取消它的特殊含义,按字面匹配)      \.,\..,\*

(1):^,$,\b,\B
\b:匹配单词边界,不论这个单词前有字符(在一字符串中间)/ 没有字符(在一行起始处)
\B:仅匹配出现在一单词中间的模式

(2):“贪心
正则表达式在匹配模式时,会尽量“吸收”更多的字符 -> “贪心”
–> ?
? 用在表示重复的元字符后面:表示要求搜索引擎匹配的字符串越短越好,留下尽可能多的字符给后面的模式(如果存在)

(3)特殊字符
\d 匹配任何数字,和[0-9] 一样。\D 是\d的反义:任何非数字
\w 匹配任何数字字母字符,和[A-Za-z0-9]相同。\W 是\w 的反义
\s 匹配任何空白符,和 [\n\t\r\v\f] 相同。\S 是\s 的反义

(4)
(…) 匹配封闭括号中正则表达式,并保存为自组 (0-9{3})?,f(oo|u)bar

re模块:核心函数方法
compile(pattern,flags = 0)
对正则表达式模式pattern进行编译,flags是可选标识符,返回一regex对象

group(),groups():
在处理正则表达式时,除regex对象外,还有一:类型-匹配对象 -> 在match() / search() 被成功调用后返回的结果

group()   返回所有匹配对象/根据要求(括号中填入数字)返回某个特定自组
groups()  返回一包含唯一/所有自组的元组
若无:group()返回所有匹配对象,groups()返回一空元组

match(pattern,string,flags = 0)
常使用正则表达式模式pattern匹配字符串string(从开头开始),若匹配成功:返回一匹配对象;否则返回None

>>>m = re.match('(\w\w\w)-(\d\d\d)','abc-123')
>>>m.group()
'abc-123'
>>>m.group(1)              #若(a(b)) 则group(1)为先出现的括号(即(ab))
'abc'
>>>m.group(2)
'123'
>>>m.groups()
('abc','123')

>>>patt = '^(\w){3}'         # 不等于 (\w)(\w)(\w),group(3)为第三个(\w)
#而此group(1)一直被替换

search(pattern,flags = 0)
搜索,第一次出现, 成功返回一匹配对象,否则返回None

findall(pattern,string [,flags])
搜索,所有出现,成功返回一匹配对象的列表,否则返回一空列表

finditer(pattern,flags])
与findall() 相同,但是finditer() 返回一迭代器,对每个匹配,返回一匹配对象

split(pattern,max = 0)
根据正则表达式pattern中的分隔符,将字符string分割为一列表,返回该列表。最多分割max次(默认全部分割)

sub(pattern,repl,max = 0)
根据正则表达式pattern,搜索string,将匹配该pattern的替换为repl

subn() 与sub()同,返回一元祖 (..,..):替换后的字符串和表示替换次数的数字

猜你在找的正则表达式相关文章