python基础-正则2
正则函数
Python提供re
模块,包含所有正则表达式的功能
由于python的字符串本身也有\转义,所以需要注意:
s = "ABC\\-001"
对应的正则表达式应为:'ABC\-001'
用python的r前缀,就不用考虑转义问题
可以使用 s = r'ABC\-001'
对应的正则表达式为:'ABC\-001'
match() 判断是否匹配成功,如果匹配成功,返回一个match对象,否则返回None
test = "用户输入的字符串"
if re.match(r'正则表达式',test):
print("OK")
else:
print("failed")
结果:failed
#正则函数
import re print("---re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None")
print(re.match('www','wwwcom').group())#在起始位置匹配
print(re.match('www','comwww'))#不在起始位置匹配 print("---re.search,扫面整个字符串并返回第一个成功的匹配,后面匹配到的都不会返回")
print(re.search('baidu','www.baidu.com').group())
print(re.search('ai','www.baidu.com').group()) print("---re.findall,从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表")
#返回匹配列表;compile,编译后执行速度更快
#p = re.compile('\d+')
#print(p.findall('one1two2three3four4'))
print(re.findall('\d+','one1two2three3four4'))
print(re.findall('four','one1two2three3four4'))
结果:
---re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
www
None
---re.search,扫面整个字符串并返回第一个成功的匹配,后面匹配到的都不会返回
baidu
ai
---re.findall,从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表
['1', '2', '3', '4']
['four']
分组:
除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()
表示的就是要提取的分组(Group)。比如:
^(\d{3})-(\d{3,8})$
分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:
import re m = re.match(r"^(\d{3})-(\d{3,8})$", '010-12345')
print(m)
print(m.group(0))
print(m.group(1))
print(m.group(2))
结果:
<_sre.SRE_Match object at 0x00000000026360B8>
010-12345
010
12345
如果正则表达式中定义了组,就可以在Match
对象上用group()
方法提取出子串来。
注意到group(0)
永远是原始字符串,group(1)
、group(2)
……表示第1、2、……个子串
import re print("---sub用于替换字符串中的匹配项")
#第一个参数表示正则,第二个表示替换的字符串,第三个表示要扫描的字符串
print(re.sub('g..t','abc','gaat gbbt gcct')) print("---split,返回切割后的列表")
print(re.split('\+','123+456*789'))
结果:
---sub用于替换字符串中的匹配项
abc abc abc
---split,返回切割后的列表
['123', '456*789']
练习1:
假设有这样一个网址:http://xqtesting.sxl.cn/archive/6688431.html,
请获取这个网址的扩展名,也就是.html这个东东。
import re print(re.findall('.html','http://xqtesting.sxl.cn/archive/6688431.html'))
结果:
['.html']
练习2:
用Python匹配HTML 标签的时候,<.*>和<.*?>有什么区别?别着急,用这两个来分别匹配
下<div><span>test</span></div>
import re print(re.findall('<.*>','<div><span>test</span></div>'))
print(re.findall('<.*?>','<div><span>test</span></div>'))
结果:
['<div><span>test</span></div>']
['<div>', '<span>', '</span>', '</div>']
python基础-正则2的更多相关文章
- Python基础(正则、序列化、常用模块和面向对象)-day06
写在前面 上课第六天,打卡: 天地不仁,以万物为刍狗: 一.正则 - 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法: - 在线正则工具:http://tool ...
- python基础-正则1
什么是正则表达式? 正则表达式是一种小型的\高度专业化的变成语言,主要用于字符串处理 正则表达式是一种通用语言,在python中通过re模块实现,import re 工具:在线正则表达式测试 http ...
- Python基础教程【读书笔记】 - 2016/7/31
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章 充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括 ...
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- Python基础-week05
本节大纲:Author:http://www.cnblogs.com/Jame-mei 模块介绍 time & datetime模块 random os sys shutil json &am ...
- python基础篇实战
1. 判断下面的结果 # 1. 判断下面的结果 # 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 pri ...
- Python基础(协程函数、内置函数、递归、模块和包)-day05
写在前面 上课第五天,打卡: 凭着爱,再回首: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 - 这种方式在 Python基础(函数部分)-day04 ...
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- 十七. Python基础(17)--正则表达式
十七. Python基础(17)--正则表达式 1 ● 正则表达式 定义: Regular expressions are sets of symbols that you can use to cr ...
随机推荐
- JSConsole调试
http://jsconsole.com/ https://github.com/remy/jsconsole
- java程序如何优化--技巧总结
http://www.douban.com/group/topic/17850695/
- iOS 一些struct类型的NSLog输出
我们经常会输出一些坐标尺寸信息之类的,比如view的frame,是CGRect类型的,用frame.oringial.x 和frame.size.width来做NSLog参数好麻烦,还好苹果对这些常用 ...
- Robot Framework ---Selenium API
一.浏览器驱动 通过不同的浏览器执行脚本. Open Browser Htpp://www.xxx.com chrome 浏览器对应的关键字: firefox FireFox ff internete ...
- python selenium2 - 鼠标键盘操作
文件路径:Python27\Lib\site-packages\selenium\webdriver\common\action_chains.py action_chains[鼠标键盘动作] 方法说 ...
- Cookie的写入,和读取
public static void SetLoginGmameInfo(string uid, string sid, string timestring, string sign) ...
- cmake学习之-project
一.系统版本 cmake version: 3.5.2 系统版本: Ubuntun 16.04 cmake docment: 3.14.4 最后更新: 2019-05-31 二.指令说明 projec ...
- 优志愿前端数据加密破解-python
# coding=utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "etiaky.sett ...
- oracle函数中lead,lag,over,partition by 的使用
lead,lag函数的分析 http://blog.csdn.net/mazongqiang/article/details/7621328 举例如下: SQL> select * from ...
- 初识ASP.net-牛腩新闻公布系统
在做牛腩新闻公布的系统的时候,总有一种感觉就是:我仍然在敲机房收费系统,唯一不同的一点.就是敲机房收费的时候,用户界面是是自己手动画界面.而,在牛腩新闻公布系统中,用户界面,却是须要自己 ...