python正则表达式特殊字符,python正则表达式--特殊字符正则表达式—特殊表达式含义
正则表达式的字母和数字表⽰他们⾃⾝,但多数字母和数字前加⼀个反斜杠时会拥有不同的含义。
下⾯列出了正则表达式模式语法中的特殊元素。
1.普通字符集
1)    \w              匹配字母数字及下划线
2)    \W              匹配⾮字母数字及下划线
3)    \s               匹配任意空⽩字符,等价于 [\t\n\r\f].
4)    \S               匹配任意⾮空⽩字符
5)    \d               匹配任意数字,等价于 [0-9]
6)    \D              匹配任意⾮数字
7)    \1...\9            匹配第n个分组的内容。
8)    [a-zA-Z0-9]    匹配任何字母及数字
2.数量字符集
⽤在字符或分组符(...)之后,默认贪婪匹配,如果想抑制贪婪匹配,需在数量字符后加?,例如:\w+?
1) .    匹配任意字符,除了换⾏符,当re.DOTALL标记被指定时,可以匹配包括换⾏符的任意字符
2)  *        匹配前⼀个字符0次1次或多次
3)  +        匹配前⼀个字符1次或多次
4)  ?        匹配前⼀个字符0次或1次
5)  {m}    匹配前⼀个字符m次
6)  {m,n}  匹配前⼀个字符m到n次
7)  {m,}    匹配前⼀个字符⾄少m次
8)  {,n}      匹配前⼀个字符0到n次,最多n次
3.边界匹配符
1)  ^      匹配字符串开头,如果是多⾏则匹配每⼀⾏的开头
2)  [^]      在[...]中,^表⽰否定,如⾮字母[^a-zA-Z],⾮数字[^0-9]
3)  $       匹配字符串或⼀⾏的结尾,如果是多⾏匹配模式,则每⼀⾏的结尾
4)  \A      仅匹配字符串的开始,同^
5)  \b        匹配⼀个单词的边界,也就是指单词和空格间的位置
6)  \B      等价于[^\b]表⽰匹配⾮单词边界
7)  \Z      匹配字符串结束,如果是存在换⾏,只匹配到换⾏前的结束字符串。
8)  \z        匹配字符串结束
4.逻辑匹配符
1)  |(或)
匹配 | 左右任意⼀种正则表达式,如果左边表达式匹配上,匹配结束,不再匹配右边的正则表达式,该符号⼀般放在()中使⽤,如果没在圆括号中则它的范围是整个正则表达式
2)  分组 (...)
后向引⽤,⽤()括起来的正则表达式将被作为⼀个分组,从正则表达式的左边依次算起,有多少个左括号'(',就有 多少个分组,分组的编码从1依次加1,⽆论是括号中嵌套括号,并且分组表达式作为⼀个整体,后可接数量词。
3)  \
引⽤分组匹配到的分组编号为的字符串 如:\1...\9
4)  (?P...)
命名分组,除了默认的分组编号外再指定⼀个别名分组
注意:P是⼤写
5)  (?P=name)
引⽤别名为name的分组匹配,这个是在正则表达式中引⽤,表⽰匹配重复的字符串,也可以使⽤编号引⽤。
注意:P是⼤写
5.特殊匹配符
1)  (?imx)     正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
2)  (?-imx)      正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。
3)  (?:...)        匹配到的括号内字符串不作为分组
4)  (?!pattern)      前向否定断⾔语法,表⽰否定开头
只能⽤在正则表达式的开头,pattern是匹配模式,它后⾯的内容需要不匹配 该正则表达式才匹配成功
5)  (?
前⾯的内容需要不匹配该pattern模式才匹配成功
6)  (?=pattern)   前向肯定断⾔语法.
需要匹配pattren模式才能匹配成功,表⽰肯定前⾯的字符内容
7)  (?<=pattern)    后向肯定断⾔语法
需要匹配pattern模式才能匹配成功,表⽰肯定后⾯的字符内容
8)    (?#...)          #后⾯的内容将被作为注释⽽忽略
1 #coding=utf-8
2 importre
3 #1. 写⼀个正则表达式,使其能同时识别下⾯所有的字符串:'bat','bit', 'but', 'hat', 'hit', 'hut'
4
5 s ="bat ,bit ,but ,hat ,hit ,hut"
6 print re.findall(r'[bh][aiu]t',s)7
8 #2.匹配由单个空格分隔的任意单词对,也就是姓和名
9
10 s = "Han meimei, Li lei, Zhan san, Li si"
11 print re.findall(r'([A-Za-z]+) ([A-Za-z]+)',s)12
13 #3. 匹配由单个逗号和单个空⽩符分隔的任何单词和单个字母,如姓⽒的⾸字母
14
15 s = "yu, Guan bei, Liu fei, Zhang"
16 print re.findall(r'([a-zA-Z]+),\s([a-zA-Z])',s)17
18 #4.匹配所有的有效的Python标识符集合
19
20 s = "_hello , python_1 , 2world , Pra_ni , @dfa_ , ewq*"
python正则表达式不包含
21 print re.findall(r'\b[a-zA-z_][\w]*(?!=\W)',s)22
23 #5. 根据美国街道地址格式,匹配街道地址。美国接到地址使⽤如下格式:1180 Bordeaux Drive。使你的正则表达式⾜够灵活,以⽀持多单词的街道名称,如3120 De la Cruz Boulevard
24
25 s = """street 1: 1180 Bordeaux Drive,"26 street 1: 3120 De la Cruz Boulevard"""
27 print re.search(r'\d+( +[a-zA-Z]+)+',s).group()28
30
31 s = "www.yahoo www.foothill.edu"
32 print re.search(r'w{3}\.[a-zA-Z]+\.(com|edu|net)',s).group()33
34 #7. 匹配所有能够表⽰Python整数的字符串集
35
36 s = '520a1 20L 0 156 -8 -10a A58'
37 ite = re.finditer(r'-?\d+',s)38 for i in ite: up(),39
40 #8. 匹配所有能够表⽰Python长整数的字符串集
41
42 s = '520a 20L 0 156 -8L A58'
43 ite = re.finditer(r'-?\d+L',s)44 for i in ite: up(),45
46 #9. 匹配所有能够表⽰Python浮点数的字符串集
47
48 s = '80.2 fds2.1 0.003'
49 print re.findall(r'\d+\.\d+',s)50
51 #10. 表⽰所有能够表⽰Python复数的字符串集
52
53 s = '12j fds -4j 5-2j fdsa'
54 print re.findall(r'\d*-?\d+j',s)55
56 #11、匹配⼀⾏⽂字中的所有开头的字母内容
57
58 s="Now, let's take a closer look at some iconic moments from the show's stage made by Chinese Angels."
59 print re.findall(r'\b\w',s)60
61 #12、匹配⼀⾏⽂字中的所有开头的数字内容
62
63 s="Now, let's take a closer look at some iconic moments from the show's stage made by Chinese Angels."
64 print re.findall(r'\b\d',s)65
66 #13、匹配⼀⾏⽂字中的所有开头的数字内容或字母内容
67
68 s = "577fsda3f you12daf f1s32dafffff"
69 print re.findall(r'\b\d+|\b[A-Za-z]+',s)70
71 #14、 只匹配包含字母和数字的⾏
72
73 s = "nihao fsadf \n789! 3asfd 1\nfds12df e4 4564"
74 print re.findall(r'^([a-zA-Z\d ]+)$',s,re.M)75
76 #15、提取每⾏中完整的年⽉⽇和时间字段
77
78 s="""time 1988-01-01 17:20:10 fsadf 2018-02-02 02:29:01"""
79 print re.findall(r'[12]\d{3}\-[01]\d\-[0123]\d\s*[012]\d\:[012345]\d\:[012345]\d',s)80
81 #16、将每⾏中的电⼦邮件地址替换为你⾃⼰的电⼦邮件地址
82
83 s="""xss@qq, 465465@163, ppp@sina84 s121f@139, soifsdfj@13485
pfsadir423@123"""
86 print re.sub(r'\w+?\@\w+?\','zeke@qq',s)87
88 #17、匹配\home关键字:
89
90 s ="fdsar \home \homeer"
91 print re.findall(r'\\home',s)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。