Python入门(06) -- 正则表达式
1 原子
(1) 普通字符作为原子
import repattern = "baidu"string = "www.baidu.com"result = re.search(pattern, string)print(result)
打印结果:
<_sre.SRE_Match object; span=(4, 9), match='baidu'>
(2) 非打印字符作为原子
import repattern = '\n'string = """www.baidu.com2017-12-16
"""result = re.search(pattern, string)print(result)
打印结果:
<_sre.SRE_Match object; span=(13, 14), match='\n'>
(3) 通用字符作为原子表
import repattern = "\w\dpython\w"string = "abc333python_py"result = re.search(pattern, string)print(result)
打印结果:
<_sre.SRE_Match object; span=(4, 13), match='33python_'>
说明:
字符 | 解释 |
---|---|
\w | 匹配字母、数字及下划 |
\W | 匹配非字母、数字及下划线 |
\s | 匹配任意非打印字符,等价于 [\t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,等价于 [0-9] |
\D | 匹配任意非数字 |
\A | 匹配字符串开始 |
\Z | 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 |
\z | 匹配字符串结束 |
\G | 匹配最后匹配完成的位置 |
\b | 匹配一个单词边界,也就是指单词和空格间的位置 |
\B | 匹配非单词边界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’ |
\n、\t等 | 匹配一个非打印字符 |
\1…\9 | 匹配第n个分组的内容 |
\10 | 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。 |
(4) 原子表
import re
string = "abc123pythonp_py"
pattern1 = "\w\dpython[a-z]\w"
pattern2 = "\w\dpython[^a-z]\w"
pattern3 = "\w\dpython[a-z]\W"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
print(result1)
print(result2)
print(result3)
打印结果:
<_sre.SRE_Match object; span=(4, 14), match='23pythonp_'>NoneNone
2 元字符
(1) 任意匹配元字符
import re
pattern = "...Python."
string = "ILove123Python_py"
print(re.search(pattern, string))
(2) 边界限定元字符
import re
"""匹配以ILove开始的字符串"""
pattern1 = "^ILove"
"""匹配以Love开始的字符串"""
pattern2 = "^Love"
"""匹配以py结束的字符串"""
pattern3 = "py$"
"""匹配以ny结束的字符串"""
pattern4 = "ny$"
string = "ILove123Python_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
result4 = re.search(pattern4, string)
print(result1)
print(result2)
print(result3)
print(result4)
打印结果:
<_sre.SRE_Match object; span=(0, 5), match='ILove'>
None
<_sre.SRE_Match object; span=(15, 17), match='py'>
None
(3) 限定符
import re
string = "ILoveAndccccc123Python_py"
pattern1 = "Py.*n"
"""匹配从o后的两个v"""
pattern2 = "dc{2}"
"""匹配从o后的三个v"""
pattern3 = "dc{3}"
"""匹配从o后的最少两个v"""
pattern4 = "dc{2,}"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
result4 = re.search(pattern4, string)
print(result1)
print(result2)
print(result3)
print(result4)
打印结果:
<_sre.SRE_Match object; span=(16, 22), match='Python'>
<_sre.SRE_Match object; span=(7, 10), match='dcc'>
<_sre.SRE_Match object; span=(7, 11), match='dccc'>
<_sre.SRE_Match object; span=(7, 13), match='dccccc'>
(4) 模式选择符
import re
string = "ILoveAndccccc123Python_py"
pattern = "Love|Python"
print(re.search(pattern, string))
打印结果:
<_sre.SRE_Match object; span=(1, 5), match='Love'>
(5) 模式单元符
import re
pattern1 = "(cd){1,}"
pattern2 = "cd{1,}"
string = "abcdcdcdePython_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
print(result1)
print(result2)
打印结果:
<_sre.SRE_Match object; span=(2, 8), match='cdcdcd'>
<_sre.SRE_Match object; span=(2, 4), match='cd'>
3 模式修正
import re
pattern1 = "python"
pattern2 = "python"
string = "abcdcdcdePython_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string, re.I)
print(result1)
print(result2)
打印结果:
None
<_sre.SRE_Match object; span=(9, 15), match='Python'>
4 贪婪模式和懒惰模式
1) 贪婪模式:尽可能多的匹配, 找到最后一个y为止
2) 懒惰模式:尽可能少的匹配,找到第一个y为止
import re
pattern1 = "P.*y" #贪婪模式
pattern2 = "P.*?y" #懒惰模式
string = "abcdcdcdePython_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
print(result1)
print(result2)
打印结果:
<_sre.SRE_Match object; span=(9, 18), match='Python_py'>
<_sre.SRE_Match object; span=(9, 11), match='Py'>
Python入门(06) -- 正则表达式相关推荐
- python入门:正则表达式,面向对象编程,零基础视频教程分享
正则表达式 import re #首先必须import re模块,re=Regular Expression,就是正则表达式的意思. pattern=re.compile(r'hello') #指明你 ...
- Python入门:正则表达式
正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻 ...
- Python入门基础总结笔记——正则表达式
Python入门基础总结笔记--正则表达式 完整基础知识参看网站:正则表达式 总结重点 用\d可以匹配一个数字,\w可以匹配一个字母或数字 用*表示任意个字符(包括0个),用+表示至少一个字符 用?表 ...
- python海龟作图好看图案_编程入门 06:Python 海龟绘图
编程入门 06:Python 海龟绘图 现在让我们开始尝试图形用户界面 (GUI) 程序的编写 Python 标准库中有个 turtle 模块, 可以生成标准的应用程序窗口进行图形绘制 turtle ...
- Python入门(二十二)- 常见模块2(正则表达式及容器)
二十二 常见模块2(正则表达式及容器) 22.1 正则表达式及re模块 正则表达式(Regular Expression)用于描述一种字符串匹配模式(Pattern),它可以用于检查一个字符串是否含有 ...
- python正则表达式入门_Python正则表达式教程之一:基础篇
前言 之前有人提了一个需求,我一看此需求用正则表达式最合适不过.考虑到之前每次使用正则表达式,都是临时抱佛脚,于是这次我就一边完成任务一边系统的学习了一遍正则表达式.主要参考PyCon2016上的一个 ...
- 哪本python入门书内容最详细-重磅 | 由浅入深的 AI 学习路线,最详细的资源整理!...
原标题:重磅 | 由浅入深的 AI 学习路线,最详细的资源整理! [导读] 本文由知名开源平台,AI技术平台以及领域专家: Datawhale, ApacheCN, AI有道和 黄海广博士联合整理贡献 ...
- (Python) 牛客 在线编程 python入门
文章目录 前言 AC代码 01 输入输出 NP1 Hello World! NP2 多行输出 NP3 读入字符串 NP4 读入整数数字 NP5 格式化输出(一) NP6 牛牛的小数输出 02 类型转换 ...
- python零基础入门教程视频下载-零基础学Python入门教程,视频资源下载
课程名称 零基础学Python入门教程,视频资源下载 课程目录 第一章 :Python介绍和安装 01.Python语言的特点 02.Python的发展历史与版本 03.Python的安装 第二章 : ...
- python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全
近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...
最新文章
- 鸿蒙系统首批更新机器,鸿蒙系统升级名单
- python精确小数点_python执行精确的小数计算方法
- 学习笔记----周志华《机器学习》第五章(神经网络)(一)
- HTML+CSS+JS实现 ❤️美女拼图游戏❤️
- vnpy学习10_常见坑
- 20190911:(leetcode习题)计数质数
- java大转盘抽奖概率算法_大转盘抽奖概率算法
- 拼团不成功自动退款功能php实现,壹佰万能门店 1.0.89 小程序前端+后端 【优化】拼团订单不成团自动退款 微擎模块...
- 树莓派小实验 | 制作一个带快门的照相机 录像机
- 4D-Net for Learned Multi-Modal Alignment 论文笔记
- 自动垃圾分类管理系统 (项目论文,硬件,FPGA)
- 全国工程师薪资统计:平均 14 k,算法岗遥遥领先
- 满庭芳国色 高清剪图 桃红 下
- ubuntu18.04 network有线网络图标缺失解决记录
- Linux下磁盘挂载
- 【数据库】 如何对数据库进行操作
- 【scrapy实战】获取我的博客信息
- 更好的子表单数据填充方式
- 联发科天玑 1080 5G 芯片发布:CPU 性能略提升,支持 200MP 相机,4K HDR 视频录制
- unity3d模仿魔兽世界鼠标对游戏操作