python学习之正则表达式

什么是正则表达式?

   正则表达式是用于文本匹配的工具,在源字符串中查找与给定的正则表达式相匹配的部分。一个正则表达式是由字母,数字和特殊字符组成的,正则表达式中有许多特殊的字符,这些特殊字符是构成正则表达式的要素。

在python中,不但提供了正则表达式,还提供了正则表达式的解析模块re.


正则表达式中的特殊字符

^:正则表达式的开始字符
$:正则表达式的结束字符
\w:匹配字母,数字,下划线
\W:匹配不是字母,数字,下划线的字符
\s:匹配空白字符
\S:匹配不是空白的字符
\d:匹配数字
\D:匹配非数字的字符
\b:匹配单词的开始和结束
\B:匹配不是单词开始和结束的位置
.:匹配任意字符,包括汉字
[m]:匹配单个字符串
[m1m2...mn]:匹配多个字符串
[m-n]:匹配m到n区间内的数字、字母。
[^m]:匹配除m以外的字符串
():对正则表达式进行分组,一对圆括号表示一组

其中,匹配符“[]”可以指定一个匹配范围,同时也可以与“\w,\s,\d等标记等价”
例如[0-9a-zA-Z_]等价于\w


正则表达式中常用限定符

*:匹配零次或者多次
+:匹配一次或者多次
?:匹配一次货零次
[m]:表示重复m次
[m,n]重复m到n此
同时,利用{}可以控制字符重复的次数。例如,\d {1,4} 表示1位到3位数字。
例如\d {1,4}表示1位到3位数字。


限定符与"?"的组合:
*?:表示匹配零次或多次,且最短匹配。
+?:表示匹配一次或多次,且最短匹配。
??:匹配一次或0次,且最短匹配。
{m}?:重复m次,且最短匹配。

python中的re模块
findall(pattern,string,flags=0)  	//表示根据pattern在string中匹配字符串,如果匹配成功,返回包含匹配结果的列表,否则返回空列表。 其中pattern是一个正则表达式

sub(pattern,repl,string,count=0)  	//该函数根据指定的正则表达式替换原字符串中的子串,repl是用于替换的字符串,string是原字符串,如果count=0表示返回string中匹配的所有结果

subn(pattern,repl,string,count=0)   	//作用和sub相同,返回1个二元的元组,第一个元组是替换结果,第二个元组是替换次数

match(pattern,string,flags=0)   	//根据pattern从string中匹配字符串,只返回第一次成功匹配的对象,如果匹配失败,返回none. 注意match函数必须从字符串的第0个索引位置开始搜索,如果第0个索引位置的字符不匹配,match的匹配就会失败。

search(pattern,string,flags=0)     	//根据pattern在string中匹配字符串,只返回第一次匹配成功的对象。

compile(pattern,flags=0)     		//编译正则表达式pattern,返回一个对象

split(pattern,string,maxsplit=0)    	//根据pattern分隔string,maxsplit表示最大的分割数。

实例演示
在了解了re模块后,我们就可以通过re模块来对字符串进行正则额匹配了!
#print re.findall('[1-9]',"1a2b3c4d5f")
#findall返回值为列表,找出所有匹配的字符


#print re.findall("[abc]","abcdef")
##pattern=[m]表示匹配单个字符串


#print re.sub('[abcde]','hel',"abcedfgh")
#根据正则表达式替换string中的子串

#print re.subn('[%20]',' cvte ','we%20are%20good%friends')
#与sub函数相同,返回一个二元元组,替换后的字符串和替换次数

#node=re.match('[987]',"987abc987")
#print re.findall(r'Hello$','Hello ABC Hello',re.I)
# I参数是正则匹配忽略大小写

#print re.findall(r'\b\w+\b',"Hello World\n",re.S)


#通过python实现电话号码的匹配
#tell=['0791-1234567','010-12345678','(010)12345678']
#print re.findall(r"[\(]? \d{3} [\]-]? \d{8} | [\(]? \d{4} [\]-]? \d{7}",tell[2])


#s='1abc23def45'
#p=re.compile(r"\d+")  #compile方法返回一个正则表达式的对象
#print p.findall(s)
#print p.pattern



  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值