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

来源:互联网 发布:扫街软件 编辑:程序博客网 时间:2024/05/30 22:50

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)d bad,bcd,bed . 匹配任意单个字符(包括符号、数字和空格) b.d bad,bzd,b$d,b d ^ 指字符串开始位置的字符或子表达式 ^a apple,asdf,a \ 转义字符(把有特殊含义的字符转换成书面形式) \.\|\\ .|\ $ 经常用在正则表达式的末尾,表示“从字符串的末端匹配”。如果不用它,每个正则表达式实际都带着“.*”,只会从字符串开头进行匹配。这个符号可以看成是^符号的反义词 [A-Z]*[a-z]*$ ACacv,zzzyx,Bob ?! “不包含”。这个奇怪的组合通常放在字符或正则表达式前面,表示字符不能出现在目标字符串里。这个符号比较难用,字符通常会在字符串的不同部位出现。如果要在整个字符串中全部排除某个字符,就加上^和$符号 ^((?![A-Z]).)*$ no-caps-here,$ymb01s,a4e f!ne

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

原创粉丝点击