我的Python成长之路---第四天---Python基础(16)---2016年1月24日(寒风刺骨)

四、正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。

下面这张图展示了使用正则表达式匹配的流程

1、Python支持的正则表达式元字符和语法

语法 说明 表达式实例 完整匹配的字符串
字符
一般字符 匹配自己 abc abc
. 匹配任意字符“\n”除外
DOTALL模式中(re.DOTALL)也能匹配换行符
a.b abc或abc或a1c等
[...] 字符集[abc]表示a或b或c,也可以-表示一个范围如[a-d]表示a或b或c或d a[bc]c abc或adc
[^...] 非字符集,也就是非[]里的之外的字符 a[^bc]c adc或aec等
预定义字符集(也可以系在字符集[...]中)
\d 数字:[0-9] a\dc a1c等
\D 非数字:[^0-9]或[^\d] a\Dc abc等
\s 空白字符:[<空格>\t\n\f\v] a\sc a b等
\S 非空白字符:[^s] a\Sc abc等
\w 字母数字(单词字符)[a-zA-Z0-9] a\wc abc或a1c等
\W 非字母数字(非单词字符)[^\w] a\Wc a.c或a_c等
数量词(用在字符或(...)分组之后)
* 匹配0个或多个的表达式。(注意包括0次) abc* ab或abcc
边界匹配(不消耗待匹配字符中的字符)
^ 匹配字符串开头,在多行模式中匹配每一行的开头 ^abc abc或abcd等
$ 匹配字符串结尾,在多行模式中匹配每一行的结尾 abc$ abc或123abc等
\A 仅匹配字符串开头 \Aabc abc或abcd等
\Z 仅匹配字符串结尾 abc\Z abc或123abc等
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b‘ 可以匹配"never" 中的 ‘er‘,但不能匹配 "verb" 中的 ‘er‘。
\B 匹配非单词边界。‘er\B‘ 能匹配 "verb" 中的 ‘er‘,但不能匹配 "never" 中的 ‘er‘。
逻辑、分组

来自为知笔记(Wiz)

时间: 2024-10-13 17:35:31

我的Python成长之路---第四天---Python基础(16)---2016年1月24日(寒风刺骨)的相关文章

Python成长之路 第一篇 《Python基础》

1.python文件命名 - 后缀名可以是任意的,但为规范便于识别,后缀名应为 .py 2.两种执行方式    python解释器   py文件路径     python   进入解释器: 实时输入并获取到执行结果 3.解释器路径 在Linux系统中应添加  #!/user/bin/env python    , windows系统中可不添加 4.编码 # -*- coding:utf8 -*-  (在python3中可不加,python只要出现中文头部必须加) ascill  只能编译英文 u

我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)

四.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用. 假设我们在编程过程中需要计算圆形的面积.如果我们不是用函数,每次需要计算原型面积的时候都需要这样 1 r1 = 12.34 2 r2 = 9.08 3 r3 = 73.1 4 s1 = 3.14 * r1 * r1 5 s2 = 3.14 * r2 * r2 6 s3 = 3.14 * r

我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)

五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>> abs(-10) 10 all(iterable) 如果可迭代对象(列表.元祖等)中所有的元素都是True,则返回True,否则返回False.相当于and >>> all([1, True, 1 == 1]) True any(iterable) 如果可迭代对象中任意一个元素是Tr

Python学习之路(四):基础知识之文件操作

1.文件操作的函数 文件操作的函数大致为:f = open(文件名(路径), mode = "?", encoding="字符集") f 可写成任意变量等,它被称作:文件句柄,文件操作符,或者文件操作对象 其中文件的路径有两种: 绝对路径,从磁盘的根目录寻找路径,或者从互联网上找路径 相对路径(相对于当前程序所在的文件夹),在同一个文件夹互相访问,如下面的例子 文件操作的encoding应该是utf-8,这是因为在Python中默认编码为utf-8. 2.mode:

我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)

一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等概念 1.集合的定义 定义一个集合需要提供一个列表作为参数,也可以不传入参数创建一个空的集合 >>> s = set([1, 2, 2, 3]) >>> s {1, 2, 3} # 可以看到在创建集合对象对过程中已经为我们把重复的元素剔除掉了 >>> s

Python学习之路(四):基础知识之深浅拷贝

1.is和==的区别 == 比较左右两边的值,如果相同,打印的是True,如果不同,打印的是False 1 n = 10 2 n1 = 12 3 print(n == n1) #False is比较的是内存地址 1 a = 'dhj' 2 b = 'dhj' 3 print(a is b) # True 1 a = 'a'*21 2 b = 'a'*21 3 print(a is b) #false 为什么第二个程序中的结果会是False呢,这涉及到一个小数据池的概念: 小数据池只限制于数值和字

我的Python成长之路---第八天---Python基础(24)---2016年3月5日(晴)

多线程编程 什么是多线程,线程是操作系统能够进行运算调度的最小单位.他包含在进程之中,是进程中的实际运作单位.线程是进程中一个单顺序的空值六,一个进程可以并发多个线程,每个线程可以并行处理不同的任务. threading模块 python的标准库提供了两个模块用于多线程处理,_thread和threading,_thread是低级模块,threading是高级模块,是对_thread进行了封装. 启动一个线程就是把一个函数传入并创建Thread实例,然后调用start()开始执行: 线程有两种调

我的Python成长之路---第八天---Python基础(25)---2016年3月5日(晴)

多进程 multiprocessing模块 multiprocessing模块提供了一个Process类来代表一个进程对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #!/usr/bin/env python3 # coding:utf-8 ''' Created on: 2016年3月5日 @author: 张晓宇 Email: [email protected] Versi

我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

socketserver 之前讲道德socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求.当然我们也可以通过python的多线程等模块自己写一个可以同时接收多个客户端连接和请求的socket.但是这完全没有必要,因为python标准库已经为我们内置了一个多线程的socket模块socketserver,我们直接调用就可以了,完全没有必要重复造轮子. 我们只需简单改造一下之前的socket演示程序的服务端就可以了,客户端不用变 1