re正则
#转义字符和原生字符 import re
#
# # 转义
# text = 'apple price is $299'
# ret = re.search('\$\d+',text)
# print(ret.group())
# # 原生字符串
text = '\c'
ret = re.match('\\\\c',text) print(ret.group()) # group 分组
text = "apple's price is $100, oriange's price is $22"
ret = re.search('.*(\$\d+).*(\$\d+)',text)
print(ret.group(2))
print(ret.groups()) # sub 替换
html = '''
<div class="job-detail">
<p>工作职责</p>
<p>1.通过模拟请求将人工复杂操作转变为自动化操作</p>
<p>2.将自动化操作融入整套系统</p>
<p>3.获取业务所需数据</p>
<p>职位要求<br></p>
<p>1.一年以上 Python 开发经验</p>
<p>2.精通网络编程、熟悉 HTTP 协议</p>
<p>3.熟悉 HTML、XPath、CSS、JavaScript</p>
<p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p>
<p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p>
<p>6.善于思考,能独立分析和解决问题</p>
<p>7.责任心强,具备良好的团队合作精神</p>
<p>8.熟练使用 Git,熟悉 Pull Request 工作流</p>
<p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p>
</div>
'''
ret = re.sub('<.*?>',"",html) # 只要标签之间的文字
print(ret) # split 分割
text = 'hello world&ni hao'
ret= re.split('[^a-zA-Z]',text)
print(ret) # compile
# 单个字符的匹配
import re # 匹配某个字符串 如果是 ahello 就不会匹配到了
# match从开头匹配 所以ahello 就匹配不到
# text = "hello"
# ret = re.match('he',text)
# print(ret.group()) # 点 . 表示匹配任意的字符 .只能匹配一个字符
# . 不能匹配\n 换行符
# text = "hello"
# ret = re.match('.',text) #只拿到h
# print(ret.group()) # \d 匹配任意数字
# text = "1234"
# ret = re.match('\d',text) #只拿到 1
# print(ret.group()) # \D 匹配任意的非数字
# text = "abc"
# ret = re.match('\D',text) #只拿到 a
# print(ret.group()) # \s 匹配空白符(\n, \t,\r, 空格)
# text = "\t"
# ret = re.match('\s',text) #只拿到 1
# print(ret.group()) # \w 匹配 a-z A-Z 数字 下滑线
# text = "_aA"
# ret = re.match('\w',text) #只拿到 _
# print(ret.group()) # \W 跟\w 相反 # 组合的方式, 只要满足中括号里的字符就可以匹配
# text = "1"
# ret = re.match('[1a]',text) #只要text是以1或a开头就能匹配到
# print(ret.group()) # text = "0731-8888888abcdef"
# ret = re.match('[\d\-]+',text)
# print(ret.group()) #0731-8888888 # text = '0123'
# ret = re.match('[0-9]+',text)
# print(ret.group()) # 0123 text = 'abcd0123'
ret = re.match('[^0-9]+',text) # 匹配非 0-9
print(ret.group())
# 多个字符的匹配
import re # * 匹配0 个或者多个字符
# text = 'abcd'
# ret = re.match('\s*',text)
# print(ret.group()) # + 匹配一个或者多个
# text = 'ab+cd'
# ret = re.match('\w+',text)
# print(ret.group()) # ? 匹配1个或者 0个
# text = 'abcd'
# ret = re.match('\w?',text)
# print(ret.group()) # {n} 指定匹配n 个字符
# text = 'abcd'
# ret = re.match('\w{3}',text)
# print(ret.group()) #abc # {m,n} 匹配m-n 个字符
# 以匹配到的最多的为准
# text = 'abcd'
# ret = re.match('\w{1,3}',text)
# print(ret.group()) # abc
# 小案例练习 import re '''
# 验证手机号码: 手机号码以 1 开头, 第二位是34578,剩下的9位随意
text = '13149133314'
ret = re.match('1[34578]\d{9}',text)
print(ret.group()) # 验证邮箱: 邮箱规则名称是 数字 字母 下划线 然后是@ 后面是域名
text = "dangshuaigood_163@163.com"
ret = re.match('\w+@[a-z0-9]+\.[a-z]+',text)
print(ret.group()) # url 的匹配
# url规则:前面是http https 后面是 :// 后面是任意非空白字符
# \s 匹配空白符(\n, \t,\r, 空格)
text = 'https://www.baidu.com/s?wd=python%20selenium&rsv_spt=1&rsv_iqid=0xa4d2655300017277&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&inputT=8498&rsv_t=dc42KYvFCf1oL197SvrZ7pGvUGE1hguHcVAhnk9wpNtiOobCOY%2FVykkEjR8gQl%2BzdBag&oq=%25E6%25B7%2598%25E5%25AE%259D&rsv_pq=b63f63a500002a02&rsv_sug3=47&rsv_sug1=42&rsv_sug7=100&rsv_sug2=0&rsv_sug4=9034' ret = re.match('(http|https|ftp)://[^\s]+',text)
print(ret.group()) # 验证身份证 总共18位 最后一位可能是小写x或大写X
text = '411102198910152116'
ret = re.match('\d{17}[\dxX]',text)
print(ret.group())
''' # ^ 一种是在中括号里表示取反 一种是以什么开头
# text = 'hello'
# ret = re.match('^he',text)
# print(ret.group()) # text = 'hello'
# ret = re.search('ll',text)
# print(ret.group()) # $ 以什么结尾
# text = 'xxxxx@163.com'
# ret = re.match('\w+@163.com$',text)
# print(ret.group()) # | 表示或 并集
# text = 'https'
# ret = re.match('(http|https)',text)
# print(ret.group()) # 贪婪模式 非贪婪模式 # 匹配0-100 之间的数字
text = ''
ret = re.match('[1-9]\d?$|100$',text)
print(ret.group())
# re中常见的函数 import re # 分组
# text = "apple's price is $99,orange's price is $10"
# ret = re.search('.*(\$\d+).*(\$\d+)',text)
# print(ret.group(2)) # print(ret.groups()) # 提取所有的子分组 ('$99', '$10') # findall 返回的是列表 找出所有的满足条件的
# print(re.findall('\$\d+',text))
# ['$99', '$10'] html = '''
<div class="job-detail">
<p>工作职责</p>
<p>1.通过模拟请求将人工复杂操作转变为自动化操作</p>
<p>2.将自动化操作融入整套系统</p>
<p>3.获取业务所需数据</p>
<p>职位要求<br></p>
<p>1.一年以上 Python 开发经验</p>
<p>2.精通网络编程、熟悉 HTTP 协议</p>
<p>3.熟悉 HTML、XPath、CSS、JavaScript</p>
<p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p>
<p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p>
<p>6.善于思考,能独立分析和解决问题</p>
<p>7.责任心强,具备良好的团队合作精神</p>
<p>8.熟练使用 Git,熟悉 Pull Request 工作流</p>
<p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p>
</div>
'''
ret = re.sub('<.+?>',"",html)
# sub 是替换 用空把标签<>内的内容替换掉
# print(ret) # 拿到所有的文本 # split函数
text = 'hello world&ni hao'
ret = re.split('[^a-zA-Z]',text)
# print(ret) # compile 用法
text = 'this number is 20.500'
ret = re.compile('\d+\.?\d*')
ret2 =re.search(ret,text)
print(ret2.group())
re正则的更多相关文章
- Javascript正则对象方法与字符串正则方法总结
正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- Javascript 中 with 的替代方案和String 中的正则方法
这几天在升级自己的MVVM 框架,遇到很多小问题,就在这里统一解决了. with 语法 在代码中,要执行这么一个函数 function computeExpression(exp, scope) { ...
- JavaScript与PHP中正则
一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...
- Java正则速成秘籍(一)之招式篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(二)之心法篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- Java正则速成秘籍(三)之见招拆招篇
导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- [Python基础知识]正则
import re str4 = r"^http://qy.chinahr.com/cvm/preview\?cvid=\w{24,25}&from=sou>id=\w{ ...
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
随机推荐
- .Net中使用数据库(sqlite)的大体流程(简单向)
说来数据库,各种语言各种数据库在操作上大体无异,基本都是连接数据库.操作数据库.关闭数据库连接的流程,不过Sqlite由于是单文件数据库,相比其他服务器的数据库连接更简单,只需要给定数据库文件的路径即 ...
- python3 提示No module named _sqlite3
yum install sqlite-devel 下载python3.6.3 重新编译安装 ./configure --enable-loadable-sqlite-extensions & ...
- FreeNAS 11.0 正式发布,提供 S3 兼容的对象存储服务
FreeNAS 11.0 正式版已发布,该版本带来了新的虚拟化和对象存储功能.FreeNAS 11.0 将 bhyve 虚拟机添加到其受欢迎的 SAN / NAS.Jail 和插件中,让用户可以在 F ...
- 硬盘的结构和介绍,硬盘MBR详细介绍(超详细彩图)
一.物理结构 1.磁道,扇区,柱面和磁头数 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息.盘片被分成许多扇形的区域,每个区域叫一 ...
- C#应用配置信息保存和读取
//保存信息 SystemConfig.WriteConfigData(“字段名称”, “这里是需要保存的内容”); //读取信息 SystemConfig.GetConfigData(“字段名称”, ...
- SignalR的简单实现(一)
原文:SignalR的简单实现(一) ASP.NET SignalR是ASP.NET开发人员的一个新库,它使您的应用程序添加实时Web功能变得非常简单.什么是"实时网络"功能?能够 ...
- 装了VS2005再装IIS,结果出了些小问题 访问IIS元数据库失败
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 装了VS2005再装IIS,结果出了些小问题访问IIS元 ...
- CWnd和HWND的区别(hWnd只是CWnd对象的一个成员变量,代表与这个对象绑定的窗口)
所有控件类都是CWnd类的派生类,CWnd的所有成员函数在控件类中都可以使用.在MFC中,CWnd类是一个很重要的类,它封装了Windows的窗口句柄HWND.在Windows编程中, ...
- AspNetCore 小记
1. Microsoft.AspNetCore.Hosting.IHostingEnvironment 的接口获取的值: WebRootPath:D:\参考资料\C#\AspNetCore开源项目\n ...
- Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)
When compiling Qt you can choose one of these options based on the configure command line: no OpenSS ...