python-正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

python中的正则表达式的语法和元字字符:

模块

1、re.match(pattern,string,flags)   ==>从字符串的开始位置匹配。

例如:

import re
a='dhddhfkjhsfd45sdkssl465461256sahgkdshglsahkj'
b=re.match('dh',a)
if b:
print(b.group())
elif b==None:
print('没有匹配成功!')

结果:

dh

 

2、re.findall(pattern,string,flags)   ==>搜索整个字符串并返回一个list。

例如:

import re
a='ahddhfkjhsfd45sdkssl465461256sahgkdshglsahkj'
b=re.findall('ahd',a)
if b:
print(b)
elif b==None:
print('没有匹配成功!')

结果:

['ahd']

 

3、re.searchl(pattern,string,flags)   ==>搜索整个字符串,找到第一个匹配值后就返回。

例如:

import re
a='dhddhfkjhsfd45sdkssl465461256sahgkdshglsahkj'
b=re.search('dh',a)
if b:
print(b.group())
elif b==None:
print('没有匹配成功!')

结果:

dh

 

 

4、re.sub(pattern, repl, string, count=0, flags=0) ==>用于替换字符串中的匹配项。

参数解释:

  • pattern : 正则中的模式字符串。
  • repl : 替换的字符串,也可为一个函数。
  • string : 要被查找替换的原始字符串。
  • count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

例如:

import re
a='axfdgdfds'
b=re.sub('d','|',a)
if b:
print(b)
elif b==None:
print('没有匹配成功!')

结果:

axf|g|f|s

 

 

5、re.compile(pattern,flags)  ==>就是对匹配格式进行了编译,在程序执行时要更快。

例如:

a='fsgdssdggsdds'

p=re.compile('d')

ma=p.findall(a)

print(ma)

结果:

['d', 'd', 'd', 'd']

 

 

6、re.split(pattern,stirng,[,maxsplit])==》按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。 

例如:

import re 

p = re.compile(r'\d+')

print p.split('one1two2three3four4')
 
结果:
['one', 'two', 'three', 'four', '']      
 
如果字符串的最后一位不是数字则返回['one', 'two', 'three', 'four']      

posted on 2017-01-12 17:25  舞曲  阅读(221)  评论(0编辑  收藏  举报

导航