python正则表达式aabb式成语_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等
python正则表达式不包含含义:常⽤在正则表达式的末尾,表⽰“从字符串的末端匹配”。可看作^符号的反义词
12)符号 ?! 例⼦为^((?![A-Z]).)*$ 结果为no-caps-here,$ymb0ls,a4e f!ne
含义:不包含。这个奇怪组合通常放在字符或正则表达式前⾯,表⽰字符串不能出现在⽬标字符串⾥。这个符号⽐较难⽤,字符通常会在字符串的不同部位出现。如果要在整个字符串中全部排除某个字符,就加上^和$符号
注:本部分的正则表达式适⽤于python,在java等部分不适⽤,⼤家注意。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论