正则表达式

我们在计算机学习的过程中总是会时不时的遇到正则表达式,很多人觉得太复杂,或者说要用的时候就上网看看博客,过一阵就忘记了。本篇博客会学习讨论正则表达式到底如何使用

正则表达式,是用来识别正则字符串的,在大量的文本中我写好正则表达式,满足我的要求的字符串就会返回,不满足的就会被忽略。骚扰电话的过滤,前缀字符串的查找等基本上任何形式的字符串都可以用正则来表达。

如:1.a字符出现至少一次
2.b跟在a的后面,有5个
3.在后跟着偶数个c
4.最后出现d或者e
满足以上的字符串可以为:abbbbbcccce,aaabbbbbccd

他的正则为:aa*bbbbb(cc)*(d|e)

逐个分析
1.aa*
a*表示a字符出现任意次数,包括0次。aa*就是a字符出现任意次,至少一次
2.5个b,我们直接打5个b就行
3.(cc)* 表示(cc)这一组出现任意次,这样一来c出不出现都是偶数
4.(d|e)最后跟的就是d或者e,保证结尾是这两者中的一个。

按照初学的来讲,每个字符应该加上中括号,更加便于我们理解。下面表格是python中常用的正则符号。

符号含义例子匹配结果
*前面字符串出现任意多次a* b*aa,aab,abb
+匹配前面的字符串至少一次a+b+aaabb,aab
[ ]匹配一次括号中字符[a-z]*任意小写单词,apple,cat,dog都行
()编组(cc)*cc,cccc
{m,n}匹配前面字符串m-n次a{1,2}b{3,4}abbb,aabbbb
[^]匹配一个不在括号中的a[^a-z]baAb,aYb,a&b
.表示任意字符(括号,字母,数字,空格等)a.bakb,alb
^以什么开头的字符串^hhello,hollow
\转义字符
$表示以什么结尾的字符串[A-Z]*[a-z]&SAa,DDFb
?!表示不包含,加上^与$,就是整个字符串中不出现^((?![A-Z]).)*$整个字符串中没有大写字母

下面我们训练一下,假设我们在一段文本中查找邮箱。邮箱的组成:
1.大小写字母,数字,_+,==.==这几种,长度不知,但是以上字符至少出现一次。[A-Za-z0-9\.+_]+
2.一个@,这个符号只能出现一次,@
3.然后包含若干个字母,至少出现一次。[A-Za-z]+
4.一个点. \.(注意要用转义)
5.最后就是域名,假设有(com,top,cn)这三种。(com|top|cn)
组合起来:[A-Za-z0-9\.+_]+@[A-Za-z]+\.(com|top|cn)

给大家推荐一个网址,用来检验自己的正则写对了没有:
http://reg.1zdz.cn/

检查一下我们的正则,发现是可以的(高亮就是匹配成功了)在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值