临时恶补一小段正则表达式以备后用!算是打个补丁?(补丁一)

 

中间插入的正则表达式的皮毛不是乱入,是因为后面用得着。算是打个补丁吧,往后的日子里,大概还有更多的补丁要打吧,历史刚刚开始。...

↗ 点击上方“文科女生学编程”关注我们
临时恶补一点点正则表达式,
在之后的学习中有用。

常用符号

.匹配任意字符,换行符
除外,

*匹配前一个字符0次或无限次,

?匹配前一个字符0次或1次,

.*贪心算法,可以塞尽可能多的东西,

.*?非贪心算法,少食多餐,

()括号内的数据作为结果返回。

跟小学老师说的不一样。

常用方法

findall匹配所有符合规律的内容,返回包含结果的列表,

search匹配并提取第一个符合规律的内存,

返回一个正则表达式对象(object),

sub替换符合规律的内容,返回替换后的值。

例子时间

a='xy123'
b= re.findall('x..',a)
print b

re是正则表达式的模块,

在一开头需要import re,

后面用re.findall来调用。

所以因此一开始新建文件的时候,

不能命名为re,我就加了xx。

findall()中的参数,

第一个是寻找的内容,第二个是寻找范围。

按照上面的例子,

打印出来的是xy1,

如果改成('x.',a)的话,

打印出来的就是xy,

所以.就是一个占位符,

会寻找x之后的字符。

a='xyxy123'
b= re.findall('x*',a)
print b

这次打印出来的是

['x','','x','','','','','']

*匹配前一个字符0次或无限次,

所以,

第一和第三个位置的x找出来,

其他位置没找到x,出现了空。

a='xy123'
b= re.findall('x?',a)
print b

这次的打印结果是,

['x','','','','','']

?匹配前一个字符0次或1次,

它在第一个位置找到了x,

后面都为空。

secret_code=  'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8rfse'

b = re.findall('xx.xx'.secret_code)
print b

c = re.findall('xx.*?xx',secret_code)
print c

d = re.findall('xx(.*?)xx',secret_code)
print d

打印结果为:

['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx']

['xxIxx','xxlovexx','xxyouxx']

['I','love','you']

对比两个,我就明白了,

第一个是能找多少找多少,

只要满足条件越多越好,

第二个在满足条件的情况下,

寻找尽可能多的满足条件的最多组合。

第三个只会出现括号中的内容,

括号内的数据作为结果返回,

没有其他多余的元素。

所以,之后需要什么内容就用括号抱起来,

不需要的内容放在括号外面。

s = '''sdfxxhello
xxfsdfxxworldxxasdf'''
d = re. findall('xx(.*?)xx',s)
print d

打印结果是['fsdf'],

这是因为hellor后面换行了,

findall找不到后一个xx了,

所有的规则都相互递推。

所以只能找到fsdf。

计算机真是任性的宝宝,

如果想要找到hello world,

需要在后面加一个参数re.S,

使.包括换行符


运行后得到['hello
','world']。

连续好几天没有12点前睡觉了,
困的不行,明天继续。


微信名:文科女生学编程

微信ID:GirlCoding



❶ 点击历史信息,查看更多内容
❷ 妹子学编程,懂猿类,猿类看妹子
❸ 长按右侧二维码,关注我


    关注 文科女生学编程


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册