python全栈学习--day31(正则)


try:
    ‘‘‘可能会出现异常的代码‘‘‘
except ValueError:
    ‘‘‘‘打印一些提示或者处理的内容‘‘‘
except NameError:
    ‘‘‘...‘‘‘
except Exception:
    ‘‘‘万能异常不能乱用‘‘‘

 

try:
    ‘‘‘可能会出现异常的代码‘‘‘
except ValueError:
    ‘‘‘‘打印一些提示或者处理的内容‘‘‘
except NameError:
    ‘‘‘...‘‘‘
except Exception:
    ‘‘‘万能异常不能乱用‘‘‘
else:
    ‘‘‘以上所有的except都不执行‘‘‘

  

try:
    ‘‘‘可能会出现异常的代码‘‘‘
except ValueError:
    ‘‘‘打印一些提示或者处理的内容‘‘‘
else:
    ‘‘‘try中的代码正常执行了‘‘‘
finally:
    ‘‘‘无论错误是否发生,都会执行这段代码,用来做一些首尾工作‘‘‘

  

number = input(‘please input your phone number:‘)
if number.isdigit() and number.startswith(‘13‘)    or number.startswith(‘14‘)    or number.startswith(‘15‘)    or number.startswith(‘16‘)    or number.startswith(‘17‘)    or number.startswith(‘18‘)    or number.startswith(‘19‘):
    print(‘通过检查‘)
else:
    print(‘格式错误‘)

上面的代码太冗长了,使用正则
number = input(‘please input your phone number:‘)
ret = re.match(‘(13|14|15|16|17|18|19)[0-9]{9}‘,number)
if ret:print(‘通过初检查‘)

实例一:

匹配出手机号码,就可以使用正则了。

with open(‘a‘,encoding=‘utf-8‘)as f1:
    li = []
    for i in f1:
        i = i.strip()
        ret = re.findall(‘1[3-9]\d{9}‘,i)
        li.extend(ret)      #extend 合并
print(li)

正则表达式本身也和python没有什么关系,就是匹配字符串内容的一种规则。

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

  正则表达式

在线测试工具  http://tool.chinaz.com/regex/

这个是最好的正则表达式工具

正则可以随时匹配

缺点:

如果只会用这个工具,而不会自己写的话。就不行了。主要是自己写,不要太依赖它。

字符组  字符串用[]表示

它只能匹配一个字符串

那么在之后我们更多要考虑的是在同一个位置上可以出现的字符的范围。字符组 : [字符组]在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字、字母、标点等等。假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。

[9-0] 是不可以的,为啥?

它比较的是ascii码

[5-9] 这种是可以的

[5.5-9] 这种是不可以的

不允许输出小数点

匹配3位数字

匹配大写

大小写匹配

[A-z] 这样写是不对的。ascii码的大小写不是连续的

它不能匹配特殊字符

[0-9a-fA-F] 表示匹配十六进制

总结:

.是万能的,除了换行符以外

匹配空白

重点


^

匹配字符串的开始

$

匹配字符串的结尾

以海开头

正则表达式,不能写在后面

它只能出现在开始位置不能在中间或者后面位置

这种情况,是唯一ke可以放到任意位置的

表示匹配11位以上,不能低于11位

匹配15位,往多的匹配

*表示0次或者多次。

这里匹配了0次,虽然没匹配上。

匹配1次或者多次

?匹配一次或者0次

匹配不上,就是0次

重点:

量词只能约束一个字符串

这里的约束[A-Z]

同时约束[0-9]和[A-Z]

没有匹配上,就是匹配0次

匹配0次

tool.chinaz.com/regex/

这个工具,显示的结果,可能跟真实的有区别

?表示0次或多次

默认的正则是贪婪匹配

如果能匹配1次,绝不匹配0次

.* 表示匹配所有

非贪婪匹配,加一个?,就是非贪婪

在规则内,越少越好

最多2次

带红线,不是重要的

元字符,应该和量词使用

分组 ()与 或 |[^]

身份证号码是一个长度为15或18个字符的字符串,如果是15位则全部由数字组成,首位不能为0;如果是18位,则前17位全部是数字,末位可能是数字或x,下面我们尝试用正则来表示:

需求对二个约束

写这样写不好

至少匹配15次

这样写,就比较专业

转义符 \

现在要匹配\n,斜杠需要转义

2个下划线就是转义

贪婪匹配

贪婪匹配:在满足匹配时,匹配尽可能长的字符串,默认情况下,采用贪婪匹配

结果就是一项

因为它要回到原来很难,所以它尽可能,多匹配一点

匹配多次,直到遇到<停下来

?先匹配后面的。

几个常用的非贪婪匹配Pattern

匹配字符 说明
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
   

原文地址:https://www.cnblogs.com/haowen980/p/8968878.html

时间: 2024-08-30 01:40:50

python全栈学习--day31(正则)的相关文章

python全栈学习--day4

列表 说明:列表是python中的基础数据类型之一,它是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: 1 li = ['alex',123,Ture,(1,2,3,'wusir'),[1,2,3,'小明',],{'name':'alex'}] 列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据.列表是有序的,有索引值,可切片,方便取值. 索引,切片,步长 li = ['xiao',123,True,(1,2,3,'wusir'),[1,2,3,'小明',

Python全栈学习:如何安装Python方法,详解!

因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先就得把Python安装到你的电脑里.安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境. 安装Python 3.7 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的.由于3.x版越来越普及,我们的教程

python全栈学习路线

查询目录 一,硬件                                                                    十一,数据库 二,Linux基础                                                           十二,前端 三,python基础                                                        十三,Django 四,python文件处理   

python全栈学习--面向对象进阶3

复习: #反射 必须会,必须能看的懂,必须知道在哪儿用 #hasattr  getattr setattr delattr 内置方法 必须能看懂 能用尽量用 __len__len(obj)的结果依赖于obj.__len()__的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,结算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断相等 __str__ str(obj) print(

python全栈学习总结更新字符串:字符串格式化方法

一百分号方式 """ 百分号方式 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐:正数前加正好,负数前加负号: - 左对齐:正数前无符号,负数前加负号: 空格 右对齐:正数前加空格,负数前加负号: 0 右对齐:正数前无符号,负数前加负号:用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必

python全栈学习总结二:数字、字符串、列表、元组、字典重要特点及方法

一 python中数据类型 整形:int 字符串:str 列表:list 元组:tuple 字典:dict 布尔值:bool 浮点型:float 一切皆对象,在python中,所有的数据类都是看做对象,故所有的类型名称都是类,通过类来建立对象,每个类中都有相应的方法,下面我们通过总结上面其中数据类型的特点以及常用的方法,来加深我们这些数据"类"的认识和理解. 二 各种数据类型总结 1 整形int 定义:age = 10 转换:value = int('158')  把字符串'158'转

python全栈学习总结五:迭代器和生成器

一 迭代器 1 什么是迭代器协议 迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 2 自定义迭代器 class MyIterator: #自定义迭代器类 def _

Day-1 Python全栈学习

乘法表: i = 1while i <= 9: print(i,end=": ") j = 1 while j <= i: print("%d*%d=%d" %(i,j,i*j),end=" ") j += 1 i += 1 print() 运行结果

python全栈学习记录--3(2018.1.13) 计算机基础知识

一.Linux操作系统1.unix是目前世界上最稳定,安全的系统.是分时操作系统,多个联机终端和采用多道技术.2.开源代表代表公开,所有人可以编辑查看,但不代表免费.3.服务器要的是性能,稳定,效率,不间断运行.故LINUX更能胜任,WINDOW不行,运行久了就会很卡.4.桥接:用交换机的方式上网,相当于在局域网内多增加一台电脑联网.5.虚拟内存一般设为物理内存的1.5-2倍,但不超过8G.物理内存大于4G就足以运行目前几乎所有程序了,没必要设置虚拟内存了. 二.网络基础之OSI五层协议1.网络