《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)
在参数中我们传入了原生字符串对象,通过compile方法编译生成一个pattern对象,然后我们利用这个对象来进行进一步的匹配。flags是可选标识符。

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, string, flags = 0)
搜索,第一次出现, 成功返回一匹配对象,否则返回None

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值