python正则表达式基础学习(一)
学习目标:
1.熟练使用正则表达式符号
2.正确组合和理解一般的正则表达式
3.能够使用python操作正则表达式
学习内容:
1.正则表达式
1.处理文本成为计算机常见工作之一
2.对文本内容的搜索提取是一项比较复杂困难的工作
3.为了快速方便处理上述问题,正则表达式技术诞生,主要发展为一个被众多语言使用的独立技术 。
2.正则表达式定义
定义:即高级文本匹配模式,提供了搜索,替代等功能。本质是由一系列特殊符号和字符组成的子符串,这个子符串即是正则表达式。 这个表达式描述了字符和字符的重复行为,可以匹配一类特征的字符串。
3.正则表达式特点
正则表达式特点
*方便进行检索和修改
*支持语言众多
*灵活多样
*mongo正则类型,django等框架作为url匹配,爬虫
4.正则表达式使用
re.findall(pattern,string)
功能:使用正则表达式匹配字符串
参数:pattern 正则表达式
string 目标字符串
返回值
示例代码:
In [1]: s="my email is lvze@tedu.cn"In [2]: import reIn [3]: re.findall("\w+@\w+\.cn",s)
Out[3]: ['lvze@tedu.cn']
元字符 (即正则表达式中有特列含义的符号)
1.普通字符
元字符:abc
匹配规则:匹配相应的普通字符
In [9]: re.findall("abc","abcfhgabcadsfsaabca")
Out[9]: ['abc', 'abc', 'abc']
2.或
元字符: ab|cd
匹配规则:匹配|两达任意一个正则表达式符合的情况
注意:|两侧不要有没用的空格
In [10]: re.findall("ab|cd","abcdefhabcdhig")
Out[10]: ['ab', 'cd', 'ab', 'cd']In [12]: re.findall("ab|bc","abcdaaaab")
#匹配一个后面不在匹配
Out[12]: ['ab', 'ab']
3.匹配单一字符
元字符 .
匹配规则:匹配除了换行之外的任意字符
f.o 可以匹配 foo fao f@o
In [13]: re.findall("f.o","foo is not fao")
Out[13]: ['foo', 'fao']
#任何字符都可以匹配,但只能匹配一个
In [14]: re.findall("你.","你好 你坏")
Out[14]: ['你好', '你坏']
4.匹配开始位置
元字符:^
匹配规则:匹配一个字符串的开始位置
In [15]: re.findall("^hello","hello world hello")
Out[15]: ['hello']
#只匹配一个hello,为开头hello
5.匹配结束位置
元字符:$
匹配规则:匹配目标字符串的结束位置
In [17]: re.findall("he$","adfasdfas,adsfsadaf,he")
Out[17]: ['he']
6.匹配重复
元字符: *
匹配规则:匹配前面的正则表达式重复0次式多次
In [18]: re.findall("ho*","ho,hoooo,hof,hoooooooooooooo,h")
Out[18]: ['ho', 'hoooo', 'ho', 'hoooooooooooooo', 'h']
7.匹配重复
元字符:+
匹配规则:匹配前面的正则表达式重复1次或多次
In [19]: re.findall("ab+","ab,a,abb,aba")
Out[19]: ['ab', 'abb', 'ab']
8.匹配重复
元字体无完肤 ?
匹配规则:匹配前面的正则表达式重复0次或1次
In [21]: re.findall("ab?","abcdefa")
Out[21]: ['ab', 'a']
9.匹配重复
元字符:{n}
匹配规则:匹配指定的重复次数
ab{3} 匹配 abbb
In [23]: re.findall("ab{5}","abbbbbbbb,abbbbbb")
Out[23]: ['abbbbb', 'abbbbb']
10.匹配重复
元字符:{m,n}
匹配规则:匹配前面的正则表达式重复m次到n次
ab{3,5} abbb abbbb abbbbb
In [24]: re.findall("ab{3,5}","abbbbbbbbbbbabbbbbbabbbbabbba...: bb
Out[24]: ['abbbbb', 'abbbbb', 'abbbb', 'abbb']
11.匹配字符集合
元字符:[]
匹配规则:匹配括号范围内的任意一个字符
[abc123d] 可以匹配 a b c 1 2 3 d
[a-z] 小写26个字母
[A-Z] 大写26字母
[0-9] 数字0-9
In [25]: re.findall("[0-9]","hello word 123")
Out[25]: ['1', '2', '3']
12.匹配字符取反集合
元字符[^…]
匹配规则:匹配除指定字符集之外的任意字符
re.findall("[^abc]","nihao abc")
Out[2]: ['n', 'i', 'h', 'o', ' ']
13.匹配任意(非)数字字符
元字符: \d \D
匹配规则; \d 匹配任意数字字符 [0-9] \D匹配任意非数字字符 [^0-9]
re.findall("1\d{10}","1595061235,1545455455,15443134543434")
#匹配手机号规则
Out[3]: ['15443134543']
14.匹配(非)普通字符(普通字符:数字字母下划线)
元字符: \w \W
匹配规则:\w 匹配普通字符 \W 匹配非普通字符
re.findall("\W+","hello$$$ $$$helllo")
Out[6]: ['$$$ $$$']
re.findall("\w+","hello1 $")
Out[4]: ['hello1']
15.匹配(非)空字符
元字符:\s \S
匹配规则:\s 匹配任意空字符 [\n \t \r \0] \S匹配任意非空字符
re.findall("\s","asdfs aasd ss")
Out[7]: [' ', ' ']re.findall("\S","asdfas asas sfsaf")
Out[8]: ['a', 's', 'd', 'f', 'a', 's', 'a', 's', 'a', 's', 's', 'f', 's', 'a', 'f']
re.findall("\s","aadas\n\r\t\0")
Out[9]: ['\n', '\r', '\t']
#小测验
#取出World China
re.findall("[A-Z]\S+","hello World nihao China ###")
Out[12]: ['World', 'China']
16.匹配起止位置
元字符:\A \Z
匹配规则 \A匹配开始位置 \Z匹配结置位置
绝对匹配 \Aabc\Z 匹配出abc (且字符串只是abc)
In [15]: re.findall("\A/\w+/\w+\Z","/azheng/saao")
Out[15]: ['/azheng/saao']
17.匹配(非)单词边界位置
元字符: \b \B
匹配规则: \b 匹配单词的边界 \B匹配非单词的边界
单词边界:数字字母下划线和其他字符的交界位置为单词的边界
In [18]: re.findall(r"\bis\b" ,"This is a test")
#r是源始字符串,让转义字符失效
Out[18]: ['is']
#匹配第一个is
In [22]: re.findall(r"\Bis\b" ,"This is a test")
Out[22]: ['is']
5.元字符总结:
匹配单个字符: a . \d \D \w \W \s \S [...] [^...]
匹配重复性 * + ? {n} {m,n}
匹配某个位置:^ $ \A \Z \b \B
其他: | () \
6.简单练习
匹配长度8-10位的密码 必须以数字开头,数字字母下划线组成
In [23]: re.findall("^[0-9]\w{7,9}","1asdfs124")
Out[23]: ['1asdfs124']
学习时间:
1、2020年10月27日早
学习产出:
1、 技术笔记 1 遍 2、CSDN 技术博客 1 篇
python正则表达式基础学习(一)相关推荐
- python正则匹配找到所有的浮点数_Python随笔17:Python正则表达式基础(4):贪婪匹配和最小匹配...
Python正则表达式 贪婪匹配/最小匹配 Re库默认采用贪婪匹配,即匹配最长的子字符串.在量词后面加一个"?",即可由贪婪匹配化为最小匹配. '*'用于将前面的模式匹配0次或多次 ...
- Day2:python爬虫基础学习(大嘘)
Day2:python爬虫基础学习(大嘘)) 教材&参考: 学习过程 Sublime配置教程 下载&安装 语言(设置中文) 设置字体/配色 配置Python环境 使用python官方编 ...
- 软件测试Python编程基础学习分享
#博学谷IT学习技术支持# 目录 一.前言 二.python基础 2.1print函数的简单使用 2.2注释 2.2.1单行注释 2.2.2多行注释 2.3Python代码中三种波浪线和 PEP8 2 ...
- 1 python编程基础学习
1 python编程基础学习 1. 程序 2 python简介(了解) 3 python的开发环境的搭建 4 第一个python程序 4.1 常用的dos命令 4.2 交互式 4.3 使用pychar ...
- python pyramid基础学习二
python pyramid基础学习二 1.前言 前面我们使用了基础命令创建pyramid项目,并运行了Hello word,万事开头难,我们知道了开发pyramid项目需要一个env文件夹,里面包 ...
- 第10期:Python零基础学习路线
大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Python零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Python学习路线不是很清晰,所以我花了一些时间给 ...
- 分享一些我个人学习Python的一些学习建议(附Python零基础学习资料)
Python是1991年推出,是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言,诞生之初定位是面向给系统管理,科研,教育和非程序员群体等使用的: 相比较其他语言,Python有简单易学. ...
- python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...
原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...
- python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班
零基础学习Python真的可以学习好吗?我想对于这个问题,是大部分想要学习Python的人都会纠结考虑的问题吧,也是很多小白最关注的的问题,今天为大家详细的解释一下. Python语言因为具有一定的独 ...
最新文章
- SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
- SAP MM ME21N 创建PO时报错 - Net price in CNY becomes too large – 之原因分析
- java.util.Queue用法
- Spring学习3之IOC创建对象的方式
- 迅速解决!!!!!启动Tomcat报错PermGen space
- Android studio | From Zero To One ——安装教程及前期学习总结
- python设置图片透明度_学习python第40天
- 你和985硕博研究生,差了这些东西
- java构造器_Java构造器就是这么简单!
- 交大计算机学硕往年录取情况,上海交通大学2020年考研报录情况汇总及分析
- Bootstrap 表单的帮助文本
- html手机端富文本,pc端富文本编辑的字符串在手机端适配
- cocos2d-x 调用java_cocos2d-x中通过Jni实现Java与C++的互相调用
- Python中直接查看对象值和使用print()输出的区别
- 网站程序 Bin目录下 dll无法删除,删除并编译后自动重新引用的解决方法
- 清华大学计算机课程对应教材,清华大学计算机专业大一到四的课程 教材详细名字...
- matlab 液压控制系统设计,基于MATLAB的液压系统的设计与仿真
- JS混入(mix-in)小案例
- css实现方框内打勾
- 如何维持手机电池寿命_教你一招,可以让你的手机电池容量长期维持在峰值,延长电池寿命...