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的结果如下:

['ea']

  显而易见这里的.号代替了a字符。修改下再看一下例子:

#coding=utf-8

from re import findall,search,S

a = 'eastmoon502136eee'
b = findall('e.', a)
print b

  我们再来看一下运行结果:

['ea', 'ee']

  可以看出这里以e开头的,的就是ea和ee,最后一个eee的话,被匹配了ee后,只有一个e了,所以就如上运行结果。
  然后用两个点号看看效果:

#coding=utf-8

from re import findall,search,S

a = 'eastmoon502136eee'
b = findall('e..', a)
print b

  运行结果如下:

['eas', 'eee']

  和我们想的一模一样。

*号

#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

  运行结果:

['Hello', 'Python']

  .*?匹配所有的zzz开头和zzz结尾的字符串不包含zzz。

  此外还有其他的字符匹配。比如[A-Z][a-z][0-9], \d, \w, \W等等,那就用到了再说了。


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python