Python学习之路-正则表达式
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一转眼2017又过去了1/4了,然后发现学习的东西没有跟上啊,赶紧学习一把,那就继续python的学习吧。正则表达式说白了其实就是用尽量少的代码来匹配字符。
常用符号 { . * ? () }
- .:匹配任意字符,换行符\n除外。
- *:匹配前一个字符0次或无限次。
- ?:匹配前一个字符0次或1次。
- .*:贪心算法。
- .*?:非贪心算法。
- ():括号内的数据作为返回结果返回。
常用方法 { findall,search,sub }
- findall:匹配所有符合规律的内容,返回包含结果的列表。
- search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)。
- sub:替换符合规律的内容,返回替换后的值。
还是来一些例子比较实际,就针对上面常用符号来实现几个例子:
.号
#coding=utf-8
from re import findall,search,S
a = 'eastmoon502136'
b = findall('e.', a)
print b
这里.号匹配任意字符,findall的结果如下:
显而易见这里的.号代替了a字符。修改下再看一下例子:
#coding=utf-8
from re import findall,search,S
a = 'eastmoon502136eee'
b = findall('e.', a)
print b
我们再来看一下运行结果:
可以看出这里以e开头的,的就是ea和ee,最后一个eee的话,被匹配了ee后,只有一个e了,所以就如上运行结果。
然后用两个点号看看效果:
#coding=utf-8
from re import findall,search,S
a = 'eastmoon502136eee'
b = findall('e..', a)
print b
运行结果如下:
和我们想的一模一样。
*号
#coding=utf-8
from re import findall,search,S
a = 'eastmoon502136eee'
b = findall('e*', a)
print b
运行结果:
['e', '', '', '', '', '', '', '', '', '', '', '', '', '', 'eee', '']
*号就是匹配0次或者无限次,所以没有匹配的就是空字符了,连着的e也算一次。如上所示。
?号
#coding=utf-8
from re import findall,search,S
a = 'eastmoon502136eee'
b = findall('e?', a)
print b
运行结果:
['e', '', '', '', '', '', '', '', '', '', '', '', '', '', 'e', 'e', 'e', '']
*号就是匹配0次或者1次,没有匹配的就是空字符了。如上所示。
.*
#coding=utf-8
from re import findall,search,S
a = 'dfadafzzzHellozzzfjkadsjfjadszzzPythonzzzdsfadsfadsf'
b = findall('zzz.*zzz', a)
print b
运行结果如下:
['zzzHellozzzfjkadsjfjadszzzPythonzzz']
.*是查找zzz和zzz之间的一个最大的区间被包围的字符。
.*?
#coding=utf-8
from re import findall,search,S
a = 'dfadafzzzHellozzzfjkadsjfjadszzzPythonzzzdsfadsfadsf'
b = findall('zzz.*?zzz', a)
print b
运行结果如下:
['zzzHellozzz', 'zzzPythonzzz']
.*?匹配zzz开头和zzz结尾的字符串。
()
#coding=utf-8
from re import findall,search,S
a = 'dfadafzzzHellozzzfjkadsjfjadszzzPythonzzzdsfadsfadsf'
b = findall('zzz(.*?)zzz', a)
print b
运行结果:
.*?匹配所有的zzz开头和zzz结尾的字符串不包含zzz。
此外还有其他的字符匹配。比如[A-Z][a-z][0-9], \d, \w, \W等等,那就用到了再说了。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |