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'
)