临时恶补一小段正则表达式以备后用!算是打个补丁?(补丁一)
中间插入的正则表达式的皮毛不是乱入,是因为后面用得着。算是打个补丁吧,往后的日子里,大概还有更多的补丁要打吧,历史刚刚开始。...
↗ 点击上方“文科女生学编程”关注我们
临时恶补一点点正则表达式,在之后的学习中有用。
常用符号
.匹配任意字符,换行符
除外,
*匹配前一个字符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
❶ 点击历史信息,查看更多内容
❷ 妹子学编程,懂猿类,猿类看妹子
❸ 长按右侧二维码,关注我

关注 文科女生学编程
