re正则模块

  • 字符串的匹配规则
  • 匹配模式
    • re.match()
    • re.search()
    • re.findall()
    • re.split()
    • re.sub()
  • 元字符
print('--------------匹配单个字符与数字--------------')

r'''
. 匹配除换行符以外的任意字符
[0-9] 匹配数组字符集合,表示括号内任意一个字符
[jiangwei] 匹配括号内任意一个字符
[a-z] 匹配任意小写字母
[A-Z] 匹配任意大写字母
[0-9a-zA-Z_]匹配任意数字,字母和下划线
[^sunck] 匹配除了sunck以外的所以字母,^表示脱字符,表示不匹配集合中的字符
[^0-9] 匹配所有的非数字字符
\d 匹配数字,效果[0-9]
\D 匹配非数字字符,效果[^0-9]
\w 匹配数字,字母下划线,效果[0-9a-zA-Z_]
\W 匹配非数字,字母下划线,效果[^0-9a-zA-Z_]
\s 匹配任意的空白符(空格,换行,换页,制表),效果[ \f\n\r\t]
\S 匹配任意的非空白符
'''
print(re.findall('\d','sunck is a22 go999od man111')) print('--------------锚字符(边界字符)----------------') '''
^ 行首匹配,和[]里的不是一个意思
$ 行尾匹配
\A 匹配字符串开始,它和^的区别是\A只匹配整个字符串的开头,即使在re.M模式下也不匹配到他行的行首
\Z 匹配字符串开始,它和$的区别是\A只匹配整个字符串的开头,即使在re.M模式下也不匹配到他行的行尾
\b 匹配一个单词的边界,也就是一个单词和空格间的位置
\B 匹配非单词边界
''' print('-----------------匹配多个字符----------------')
'''
说明:下方的xyz均为假设的普通字符,n,m是非负整数,不是正则表达式的元字符
(xyz) 匹配小括号内的xyz(作为一个整体去匹配)
x? 匹配0个或者1个x
x* 匹配0个或者任意多个x(.*表示匹配0个或者任意多个字符,换行符除外)
x+ 匹配至少一个x
x{n} 匹配确定个数的n个x(n是一个非负整数)
x{n,m} 匹配至少n个最多m个x
x|y |表示或,匹配的是x or y
''' print('-----------特殊----------')
'''
*? +? x? 最小匹配,通常都是尽可能多的匹配,可以使用这种带问号的解决贪婪匹配
(?:x) 类似(xyz),但不表示一个组
'''
  • 三个常用方法
import re

'''
re.match()函数 功能:尝试从字符串的起始位置匹配,如果不是起始位置匹配成功,返回None
原型:match(patter,string,flags=0)
参数:pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
re.I 忽略大小写
re.L 做本地户识别
re.M 多行匹配,影响`和$
re.S 是.匹配包括换行符在内的所有字符
re.U 根据unicode字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的格式理解正则表达式 re.search()函数
功能:扫描整个字符串,并返回第一个成功的匹配
'''
# www.baidu.com
print(re.match('www','www.baidu.com'))
print(re.match('www','ww.baidu.com'))
print(re.match('www','wwW.baidu.com',re.I))
print(re.match('www','baidu.www.com')) '''
re.search()函数
原型:match(patter,string,flags=0)
参数:pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回第一个匹配成功的 '''
print(re.search('sunck','good man is sunck!sunck is nice')) '''
re.findall()函数
原型:match(patter,string,flags=0)
参数:pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式
功能:扫描整个字符串,并返回一个列表
'''
print(re.findall('sunck','good man is sunck!sunck is nice'))
  • 其他方法
import re

'''
字符串切割
'''
str1="sunck is a good man"
print(str1.split(" "))
print(re.split(r" +",str1)) '''
字符串的替换和修改:sub(pattern, repl, string, count=0, flags=0)、subn
参数:
repl 指定用来替换的字符串
string 目标字符串
count 最多替换次数 功能:在目标字符串中,以正则表达式的规则,匹配字符串,再替换。
区别:前者返回一个,后者是被替换的次数被替换的字符串,后者返回一个元祖,前者是被替换的字符串。
'''
str3='sunck is a good good good man'
print(re.sub(r"(good)","nice",str3,count=2)) # type string
print(re.subn(r"(good)","nice",str3,count=2)) # type tuple '''
分组
概念:除了简单的判断之外,正则表达式还有提取子串的功能。用()表示的就是就是提取分组
'''
str4='010-53247654'
m=re.match(r"((?P<first>\d{3})-(?P<last>\d{8}))",str4)
# 使用序号获取对应组的信息,group(0)表示原始字符串
print(m.group(0))
print(m.group(1))
print(m.group("first"))
print(m.group(3))
print(m.groups()) '''
编译:当我们使用正则表达式时,re模块会做两件事
1、编译正则表达式,如果正则表达式本身不合法,会报错
2、用编译后的正则表达式去匹配对象
''' # 之前使用
pat=r"1(([3587])\d|(47))\d{8}$"
print(re.match(pat,"13006293101")) # 编译成对象使用
re_telephon = re.compile(pat)
print(type(re_telephon))
print(re_telephon.match("13600000000"))

008---re正则模块的更多相关文章

  1. Python全栈开发【re正则模块】

    re正则模块 本节内容: 正则介绍 元字符及元字符集 元字符转义符 re模块下的常用方法 正则介绍(re) 正则表达式(或 RE)是一种小型的.高度专业化的编程语言. 在Python中,它内嵌在Pyt ...

  2. python_way day6 反射,正则 模块(进度条,hash)

    python_way day6 反射 正则 模块 sys,os,hashlib 一.模块: 1.sys & os: 我们在写项目的时候,经常遇到模块互相调用的情况,但是在不同的模块下我们通过什 ...

  3. 小白的Python之路 day5 re正则模块

    re正则模块 一.概述 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,要讲他的具体用法要讲一本书!它内嵌在Python中,并通过 re 模块实现.你可以为想要匹配的相应字符串 ...

  4. 认识python正则模块re

    python正则模块re python中re中内置匹配.搜索.替换方法见博客---python附录-re.py模块源码(含re官方文档链接) 正则的应用是处理一些字符串,phthon的博文python ...

  5. Python3中正则模块re.compile、re.match及re.search函数用法详解

    Python3中正则模块re.compile.re.match及re.search函数用法 re模块 re.compile.re.match. re.search 正则匹配的时候,第一个字符是 r,表 ...

  6. day22、模块-basedir、os、json模块、pickle和正则模块。

    四.正则. re模块: 作用:针对的对象:字符串, 课前引入: 例子一. s='dsdsadsadadsalexdsds's.find('alex') 如何找到字符串内部的alex;?过去学习可使用方 ...

  7. 21 re正则模块 垃圾回收机制

    垃圾回收机制 不能被程序访问到的数据,就称之为垃圾 引用计数 引用计数:用来记录值的内存地址被记录的次数的:当一个值的引用计数为0时,该值就会被系统的垃圾回收机制回收 每一次对值地址的引用都可以使该值 ...

  8. Python——正则模块

    1.re模块是用来操作正则表达式 2.正则表达式——用来字符串匹配的 (1)字符组:[字符组]  例如[0123fdsa456*/-] [0-9] 等同于[0123456789] [a-z] 匹配小写 ...

  9. Go语言正则模块

    基本使用 import "bytes" import "fmt" import "regexp" func main() { //这个测试一 ...

随机推荐

  1. oracle数据库建表设置自增主键

    create sequence userlogin_ID increment by 1 start with 1 minvalue 1 maxvalue 9999999999999999 nocach ...

  2. day011-网络编程

    1. 网络编程概述 1.1  网络编程三要素 地址.端口.协议 1.1.1 IP地址:网络中设备的唯一标识. IPV4格式:xxx.xxx.xxx.xxx由四段数字组成,每一段数字由八位二进制数字组成 ...

  3. angularjs filter详解

    过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果. 主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等. ng内置了一些过滤器, ...

  4. Hybris ECP(Enterprise Commerce Platform)的调试

    This blog is written to demonstrate how to setup debug environment for Hybris ECP(Enterprise Commerc ...

  5. IOS PushMeBaby(是一款用来测试ANPs的开源Mac项目)

    ● PushMeBaby是一款用来测试ANPs的开源Mac项目 ● 它充当了服务器的作用,用法非常简单 ● 它负责将内容提交给苹果的APNs服务器,苹果的APNs服务器再将内容推送给用户 的设备 ● ...

  6. HDU 2586 How far away ?【LCA】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2586 How far away ? Time Limit: 2000/1000 MS (Java/Oth ...

  7. 如何写一个FMDB帮助类?看看runtime吧

    FMDB是一个封装很好的sqllite类库.项目中调用的时候只需要写SQL语句,就能实现数据的CURD.我试过即使手写SQL语句也很麻烦,需要一个字段一个字段的拼上去,而且容易出错.有没有动态获取字段 ...

  8. mybatis学习记录五——动态sql

    8       动态sql 8.1     什么是动态sql mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装. 8.2     需求 用户信息综合查询列表 ...

  9. 【洛谷P1108】低价购买

    低价购买 题目链接 n<=5000 n^2的算法是可以接受的 第一个数字显然是求最长下降子序列,可以n^2或nlognDP 要求方案数,可以在n^2算法中做一些修改,DP求方案数 dp[i]表示 ...

  10. Consul vs Zookeeper vs Etcd vs Eureka

    为什么不应该使用ZooKeeper做服务发现 Eureka 更好 ,etcd作为一个受到Zookeeper与doozer启发而催生的项目,除了拥有与之类似的功能外,更具有以下4个特点{![引自Dock ...