python——正则表达式

今天看python网络数据采集,看到了正则表达式部分,感觉挺有趣的,记录下来

首先为什么叫正则表达式——它可以识别正则字符串 

什么是正则字符串——任意可以用一系列线性规律构成的字符串

例子一:

1)字母a至少出现一次;

2)后面跟着字母b重复5次;

3)后面再跟着字母c重复任意偶数次;

4)最后一位是字母d,也可以没有。

满足规则的字符串有很多:“abbbbbcccc”  “aaabbbbbccd”  “abbbbbd”

正则表达式就是表达这组规则的缩写,这组规则的正则表达式如下:

aa*bbbbb(cc)*(d| )

分析:

条件一:a至少有一个,有一个,a;有多个,a*(读作a星),a*表示“重复任意次a,包括0次”。

aa*满足条件一

条件二:b重复5次,没什么说的,bbbbb

条件三:c重复任意偶数次,(cc)*表示“重复任意次cc,包括0次”,满足条件三

条件四:最后一位是字母是字母d,也可以没有,(d| ),(|)在表达式里表达“这个或那个”,本例表示“增加一个后面跟着空格的d,或者只有一个空格”

 

例子二:识别邮箱地址

规则一:地址第一部分至少包括一种内容:大写字母/小写字母/数字0-9/点号(.)/加号(+)/或下划线(_)

正则表达式为:[A-Za-z0-9\._+]+

A-Z表示“任意A-Z的大写字母”,把所有可能的序列和符号放在中括号里,表示“括号里的任何一个”;后面的加号,他表示“这些符号都可以出现多次,且至少出现1次”

规则二:第二部分包含一个@符号

正则表达式为@

规则三:第三部分必须至少包含一个大写或小写字母

正则表达式为:[A-Za-z]+       满足至少有一个字母

规则四:第四部分为一个点号(.)

正则表达式为\.             要有斜杠,不知道为什么,以后补充原因

规则五:以com/org/edu/net结尾

正则表达式为(com|org|edu|net)   列出可能出现的字母序列

综上,完整的正则表达式:[A-Za-z-0-9\._+]+@[A-Za-z]+\.(com|org|edu|net)

 

最后是正则表达式常用符号:

1)符号  *          例子为a*b*           结果为aaaaa,aaaabbbbb,bbbbb等

含义:匹配前面的字符/子表达式或括号里的字符0次或多次

2)符号  +          例子为a+b+         结果为aaaaab,aaaabbbbb,abbbbb等

含义:匹配前面的字符/子表达式或括号里的字符至少1次

3)  符号  []           例子为[A-Z]*       结果为APPLE,CAPITALS,QWERTY等

含义:匹配任意一个字符(相当于“任选一个”)

4)  符号  ()      例子为(a*b)*   结果为aaabaab,abaaab,abababababa等

含义:表达式编组(在正则表达式的规则里编组会优先运行)

5)符号  {m,n}   例子为a{2,3}b{2,3}  结果为aabbb,aaabbb,aabb,aaabb

含义:匹配前面的字符/子表达式或括号里的字符m到n次(包含m或n)

6)符号  [^]          例子为[^A-Z]*     结果为apple,lowercase,pwerty

含义:匹配任意一个不在中括号的字符

7)符号 |             例子为b(a|i|e)d   结果为bad,bid,bed

含义:匹配任意一个由竖线分割的字符(注意该符号为竖线)

8)符号  .            例子为b.d                   结果为bad,bzd,b$d,b d

含义:匹配任意单个字符(包括符号/字母和空格)

9)符号 ^          例子为^a                    结果为apple,asdf,a等

含义:指字符串开始位置的字符或子表达式

10)符号  \         例子为\.   \|    \\         结果为 .    |     \

含义:转义字符(把有特殊含义的字符转换为字面形式)

11)  符号  $        例子为[A-Z]*[a-z]*$     结果为ABCabc,zzzyx,Bob等

含义:常用在正则表达式的末尾,表示“从字符串的末端匹配”。可看作^符号的反义词

12)符号  ?!   例子为^((?![A-Z]).)*$   结果为no-caps-here,$ymb0ls,a4e f!ne

含义:不包含。这个奇怪组合通常放在字符或正则表达式前面,表示字符串不能出现在目标字符串里。这个符号比较难用,字符通常会在字符串的不同部位出现。如果要在整个字符串中全部排除某个字符,就加上^和$符号

 

 

注:本部分的正则表达式适用于python,在java等部分不适用,大家注意。

 

posted on 2018-03-19 20:14  逆水城殇  阅读(619)  评论(0编辑  收藏  举报

导航