内容梗概:
1. 正则表达式
2. re模块的使⽤
3. 一堆练习
正则表达式是对字符串串操作的一种逻辑公式. 我们一般使用正则表达式对字符串进行匹配和过滤.
使用正则的优缺点:
优点: 灵活,功能性强,逻辑性强.
缺点: 上手难.一旦上手,会爱上这个东西
正则表达式由普通字符和元字符组成. 普通字符包含大小写字母,数字.\
在匹配普通字符的时候我们直接写就可以了
元字符(重点): 元字符才是正则表达式的灵魂. 元字符中的内容太多了了, 在这⾥里里我们只介绍⼀一些常⽤用的.
1. 字符组
字符组很简单⽤用[]括起来. 在[]中出现的内容会被匹配. 例例如:[abc] 匹配a或b或c
如果字符组中的内容过多还可以使⽤用- , 例例如: [a-z] 匹配a到z之间的所有字⺟母 [0-9]
匹配所有阿拉伯数字
2. 简单元字符
.常用的基本的元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空⽩白符
\d 匹配数字
\n 匹配一个换⾏行行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符 3. 量词
我们到目前匹配的所有内容都是单一文字符号. 那如何一次性匹配很多个字符呢,
常用量词
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更更多次
{n,m} 重复n到m次 4. 惰性匹配和贪婪匹配
在量词中的*, +,{} 都属于贪婪匹配. 就是尽可能多的匹配到结果.
str: 麻花藤昨天让英雄联盟关服了了
reg: 麻花藤.*
此时匹配的是整句句话 在使⽤用.*后⾯面如果加了? 则是尽可能的少匹配. 表⽰示惰性匹配
str: 麻花藤昨天让英雄联盟关服了了
reg: 麻花藤.*?
此时匹配的是 麻花藤 2. re模块
re模块是python提供的一套关于处理理正则表达式的模块. 核心功能有四个:
1.re.findall()
2.re.finditer()
3.re.search()
4.re.match()
import re
lis = re.findall("\w+","alex is a bitch")
print(lis)
lis = re.finditer("\w+","alex is a bitch")
for el in lis:
print(el.group())
a = re.search("e","alex is a bitch").group()
print(a) c = re.match("alex","alex is a bitch").group()
print(c) 注意的点:
lis = re.findall("www.(baidu|oldboy).com", "www.baidu.com")
print(lis) #结果为baidu lis = re.findall("www.(?:baidu|oldboy).com", "www.baidu.com")
print(lis) #结果为"www.baidu.com" 5.其他模块
lis = re.split("(is)","alex is abs sb and a big sb")
print(lis) lis = re.sub("sb","goodman","alex is abs sb and a big sb")
print(lis) lis = re.subn("sb","goodman","alex is abs sb and a big sb")
# print(lis) 特别注意:compile 爬虫的时候用的会比较多,要掌握用法
obj = re.compile("sb")
lis = obj.sub("goodman","alex is a sb and a big sb")
print(lis) obj = re.compile("sb")
# lis = obj.split("alex is a sb and a big sb")
# print(lis) obj = re.compile(r"alex(?P<ID>\d+)a")
lis = obj.search("alex250a260sb300anda125big852sb")
print(lis.group())
print(lis.group("ID"))

python基础之正则表达式 re模块的更多相关文章

  1. 十七. Python基础(17)--正则表达式

    十七. Python基础(17)--正则表达式 1 ● 正则表达式 定义: Regular expressions are sets of symbols that you can use to cr ...

  2. Python基础之 正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  3. Python基础(十)-模块

    模块初识 一般把不同功能代码放到不同py文件,一个py文件就是一个模块 三种模块库: 1.Python标准库 2.第三方库 3.自定义库 导入模块:import 库名 (Python解释器只认识执行文 ...

  4. python基础(10)--模块

    模块(module) 模块,用一坨代码实现了某个功能的代码集合 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来 ...

  5. Python基础(12)--模块

    本文地址:http://www.cnblogs.com/archimedes/p/python-modules.html,转载请注明源地址. 模块简介 如果你退出 Python 解释器重新进入,以前创 ...

  6. python基础之正则表达式

    正则表达式语法 正则表达式 (或 RE) 指定一组字符串匹配它;在此模块中的功能让您检查一下,如果一个特定的字符串匹配给定的正则表达式 (或给定的正则表达式匹配特定的字符串,可归结为同一件事). 正则 ...

  7. python基础之正则表达式。

    简介 就其本质而言,正则表达式是内嵌在python内,由re模块实现,小型的专业化语言,最后由c写的匹配引擎执行.正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来 ...

  8. 第六章:Python基础の反射与常用模块解密

    本课主题 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re ...

  9. python记录_day23 正则表达式 re模块

    一. 正则表达式 使用python的re模块之前应该对正则表达式有一定的了解 正则表达式是对字符串操作的一种逻辑公式.我们一般使用正则表达式对字符串进行匹配和过滤. 正则的优缺点: 优点:灵活, 功能 ...

随机推荐

  1. What is event bubbling and capturing?

    What is event bubbling and capturing? 答案1 Event bubbling and capturing are two ways of event propaga ...

  2. javbus爬虫-老司机你值得拥有

    # 起因 有个朋友叫我帮忙写个爬虫,爬取javbus5上面所有的详情页链接,也就是所有的https://www.javbus5.com/SRS-055这种链接, 我一看,嘿呀,这是司机的活儿啊,我绝对 ...

  3. HIHOcoder 1457 后缀自动机四·重复旋律7

    思路 后缀自动机题目,题目本质上是要求求出所有不同的子串的和,SAM每个节点中存放的子串互不相同,所以对于每个节点的sum,可以发现是可以递推的,每个点对子节点贡献是sum[x]*10+c*sz[x] ...

  4. Shiro学习笔记(一)

    首先展示一下项目的结构目录 工程是用maven创建的   主要是方便管理Jar包  maven的  pom文件中所需要的jar包 <dependencies> <dependency ...

  5. 【Cucumber】【问题集锦】

    [问题一]invalid byte sequence in GBK"问题 invalid byte sequence in UTF-8"问题 参考地址:http://fantaxy ...

  6. 【Java】【问题】

    [log4j:WARN No appenders could be found for logger 解决方案] [解决] 我们在使用Log4j的时候,总是出现: log4j:WARN No appe ...

  7. BZOJ 4591 【SHOI2015】 超能粒子炮·改

    题目链接:超能粒子炮·改 这道题的大体思路就是用\(lucas\)定理,然后合并同类项,就可以得到一个可以递归算的式子了. 我们用\(S(n,k)\)表示答案,\(p\)表示模数(\(2333\)是一 ...

  8. Codeforces 781D Axel and Marston in Bitland

    题目链接:http://codeforces.com/contest/781/problem/D ${F[i][j][k][0,1]}$表示是否存在从${i-->j}$的路径走了${2^{k}} ...

  9. Virtualbox-CentOS网络配置

    1.记下虚拟网卡IP 2. 配置网卡1.网卡2 网卡1 ---对应---eth0----NAT(网络地址转换)用来与外网通信 网卡2 ---对应---eth1----Host-only用来与主机通信 ...

  10. IIS7 配置Http重定向到Https

    1.注意首先要安装url重定向模块 微软官方地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=7435 百度网盘地址:链接: ht ...