python--正则表达式

一:re模块的使用

     在python中,需要通过正则表达式对字符串进行匹配操作的时候,可以使用一个模块re

re模块的使用过程:

import re  #导入re模块

result = re.match(正则表达式,要匹配的字符串) #使用match()方法进行匹配操作;若匹配成功返回Match Object对象,若不成功则返回None

result.group() #如果上一步匹配到数据的话,就可以使用group()方法来提取数据(可以带参数),

二:常见的正则表达式符号

 表示字符:

字符 功能
. 匹配任意一个字符(\n除外)
[] 匹配[]中列举的字符
\d 匹配数字,即0-9
|\D 匹配非数字
\s 匹配空白,即空格,tab间等
\S 匹配非空白
\w 匹配单词字符,a-z,A_Z,0-9
\W 匹配非单词字符

 

 

 

 

 

 

 

 表示数量:

字符 功能
* 匹配前一个字符出现0次或无限次,即可有可无
+ 匹配前一个字符出现一次货无限次,即至少一次
匹配前一个字符出现0次或者一次
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次

 

 

 

 

 

 

  表示边界:

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界

 

 

 

 

  匹配分组:

字符 功能
   | 匹配左右任意一个表达式
(ab) 将括号中字符作为一个
  \num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

 

 

 

 

 

注意:

1:通常在写需要使用正在表达式的地方的字符串 都要加上r 变成原始字符串 例:r’\d/sabc‘

 :2:关闭贪婪模式 .+? 加上一个问号来关闭贪婪模式

 

 1 import  re
 2 
 3 result = re.match(r'^1[3578]\d{9}$','13524567899')#匹配电话号码
 4 s = result.group()
 5 print(s)
 6 
 7 
 8 a = re.match(r'[1-9]?\d$|100$','100')#匹配0-100之间的数
 9 ss =a.group()
10 print(ss)
11 
12 s = re.match(r'<h1>(.*)</h1>','<h1>我是大神</h1>')
13 sss = s.group()
14 sss1= s.group(1) #带的参数就是提取()分组 带的是几 就提取第几个分组
15 print(sss)
16 print(sss1)
17 
18 d = re.match(r'<(.+)><(.+)>(.+)</\2></\1>','<a><h1>我要学会正则表达式</h1></a>')
19 dd = d.group()
20 print(dd)
21 dd1 = d.group(3)
22 print(dd1)
23 
24 y = re.match(r'.+@(163.com|qq.com|126.com)$','1139018131@qq.com')#后面那个括号(163.com|qq.com|126.com) 表示人选一种都可以
25 yy = y.group()
26 print(yy)
27 
28 q = re.search(r'python','python is very good') #从左到右 查到到匹配的字符就结束
29 print(q.group())
30 
31 f = re.findall(r'python','python is good,and I like python') #找出所有的匹配项
32 print(f)
33 
34 esu = re.sub('java','python','java is my favortive')#将匹配到的字符替换
35 print(esu)

 

posted @ 2018-03-28 11:42  奋斗的小虫子  阅读(97)  评论(0编辑  收藏  举报