正则表达式

正则表达式

正则表达式这么叫,是因为他们可以识别正则字符串,

也就是说,它们可以这么定义:“如果你给我的字符串符合规则,我就返回它”,或者是“如果字符串不符合规则,我就忽略它”

学好正则表达式,对于爬虫中,有效信息的提取是非常有帮助的,至少我现在希望在杂乱无章的信息中,找到我所需要的文件。

对于一个简单的正则表达式

aa*bbbbb(cc)*(d|)

进行分解:

aa*:

a 后面跟着的 a*(读作 a 星)表示“重复任意次 a,包括 0 次”。这样就可以保证字母 a至少出现一次。

bbbbb:

就是连续五个b

(cc)*:

表示有任意多个cc(同样也可是是0个)

(d|):

表示有一个d或者没有,就是逻辑或的意思

那么我们在来分析一个邮箱

规则正则表达式
邮箱地址的第一部分至少包括一种类型:大写字母,小写字母,数字0~9,点号,加号,或下划线[A-Za-z0-9\._+]+:这个正则表达式简写,A-Z,a-z,0-9分别表示大写字母,小写字母和数字,所有放在中括号里面表示出现一次,即一个字母,后面还有一个加号表示这些符号都可以出现多次,且至少出现一次
邮箱还包含一个@符号直接出现一个@符号即可
在符号@之后,邮箱地址还至少包含一个大写或小写字母[A-Za-z]
之后跟一个点号(.)\.:域名前面必须有
最后还有结尾符(com|org|edu|net)

完整的正则表达式:

[A-Za-z0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)

常见的Python中的正则表达式

符号含义例子匹配结果
*匹配前面字符,子表达式或括号里面的字符0次或多次a*b*aaaaaa,abbbb,bbb
+匹配前面的字符,子表达式或括号里面至少一次a+b+abb
[]匹配任意一个字符[A-Z]A
()表达式编组(a*b)*aaab
{m,n}匹配前面的字符、子表达式或括号里的字符 m 到n次(包括m,n)a{2,3}b{2,3}aabbb
[^]匹配任意一个不在括号里面的字符[^A-Z]*apple
|理解为或运算符b(a|i|e)dbad,bid,bed
.匹配任意单个字符(包括符号,子表达式)b.dbad,bid,b$d
\转义字符(把有特殊含义的字符转化为普通字符)\.\ | \\.|\
$表示从字符串的末端匹配[A-Z]*[a-z]*$ABCabc,zzzyx
^指字符串开始位置的字符或子表达式^aApple,aaad
?!“不包含”。这个奇怪的组合通常放在字符或正则表达式前面,表示字符不能出现在目标字符串里。这个符号比较难用,字符通常会在字符串的不同部位出现。如果要在整个字符串中全部排除某个字符,就加上 ^ 和 $ 符号^((?![A-Z]).)*$(就是不能包含大写字母)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值