Python正则表达式中的常用符号

Python正则表达式中常用的符号

简介

正则表达式之所以叫做正则表达式,是因为他们可以识别正则字符串;源字一本书中的定义是:“如果你给我的字符串符合规则,我就返回它”,或者是“如果字符串不符合规则,我就忽略它”。Python正则表达式在编写网络爬虫代码时使用可能会极大提高效率。
其实正则表达式上手一点也不难,而且运行很快,通过一些简单的例子就可以轻松地学会。下面通过对一个邮箱地址的识别来帮助学习理解正则表达式:

规则正则表达式
1.邮箱地址的第一部分至少包括一种内容:大写字母、小写字母、数字0-9、点号(.)、加号(+)或下划线(_)[A-Za-z0-9._+]+:这个正则表达式简写表达的很好,它用”A-Z”表示“任意A~Z的大写字母”。把所有可能的序列和符号放在中括号(不是小括号)里表示“括号中的符号里任何一个”。要注意后面的加号,它表示“这些符号都可以出现多次,且至少出现一次”
2.之后,邮箱地址会包含一个@符号@:这个符号很直接。@符号必须出现在中间位置,有且仅有一次
3.在符合@之后,邮箱地址还必须至少包含一个大写或小写字母[A-Za-z]+:可能只在域名的前半部分、符号@后面用字母。而且,至少有一个字母
4.之后跟一个点号(.)\.:在域名前必须有一个点号(.)
5.最后邮箱地址用com、org、edu、net结尾(实际上,顶级域名有很多种可能,但是作为展示这四个就够了)(com|org|edu|net):这样列出了邮箱地址中可能出现在点号之后的字母序列

常用符号

所以现在我们把上述的规则连接起来,就或者了完整的验证邮箱地址的正则表达式:

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

下面的表格总结了在Python的正则字符串中最常用的,可以用来查找和收集绝大多数数据类型。

符号含义例子匹配结果
*匹配前面的字符、子表达式或括号里的字符0次或多次a*b*aaaaaa,aabbbbb,bbbbbb
+匹配前面的字符、子表达式或括号里的字符至少1次a+b+aaaaab、aaabbbbb、abbbbbb
[]匹配任意一个字符(相当于任选一个)[A-Z]*APPLE,CAPSDF,QEFEFC
()表达式编组(在正则表达式的规则里编组会优先运行)(a*b)*aaabaab,abaaab,ababaaab
{m,n}匹配前面的字符、子表达式或括号里的字符m到n次(包含m或n)a{2,3}b{2,3}aabbb,aaabbb,aabb
[^]匹配任意一个不在中括号里的字符[^A-Z]*apple,lowercase,beauty
|匹配任意一个由竖线分割的字符、子表达式(注意是竖线,不是大写字母I)b(a|c|e)dbad,bcd,bed
.匹配任意单个字符(包括符号、数字和空格)b.dbad,bzd,b$d,b d
^指字符串开始位置的字符或子表达式^aapple,asdf,a
\转义字符(把有特殊含义的字符转换成书面形式)\.\|\\.|\
$经常用在正则表达式的末尾,表示“从字符串的末端匹配”。如果不用它,每个正则表达式实际都带着“.*”,只会从字符串开头进行匹配。这个符号可以看成是^符号的反义词[A-Z]*[a-z]*$ACacv,zzzyx,Bob
?!“不包含”。这个奇怪的组合通常放在字符或正则表达式前面,表示字符不能出现在目标字符串里。这个符号比较难用,字符通常会在字符串的不同部位出现。如果要在整个字符串中全部排除某个字符,就加上^和$符号^((?![A-Z]).)*$no-caps-here,$ymb01s,a4e f!ne

每种语言的正则表达式大致相同,但不完全相同,比如Java和Python在具体使用时还需要查看相关文档。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值