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中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
随机推荐
- angular form set dynamic control(form动态设置control)
实现效果 form表单控件的实时更新 效果如图 关键代码 validateForm: FormGroup; // 表单校验 constructor( private fb: FormBuilder ) ...
- 数据绑定(六)使用XML数据作为Binding的Source
原文:数据绑定(六)使用XML数据作为Binding的Source .NET Framework提供了两套处理XML数据的类库 1. 符合DOM标准的类库:包括XmlDocument.XmlEleme ...
- 2017-01-11&2017-01-12
江门警情协作需求. 连续两天搞到超过十点半,所以今天来一并写一下这两天的记录吧. 1.11号明显的进展算是把通讯调通了,还有重新把协作请求的界面按一开始的设想嵌到主界面中. 2.今天12号貌似进展要大 ...
- Win8 Metro(C#) 数字图像处理--1 图像打开,保存
原文:Win8 Metro(C#) 数字图像处理--1 图像打开,保存 作为本专栏的第一篇,必不可少的需要介绍一下图像的打开与保存,一便大家后面DEMO的制作. Win8Metro编程中,图像相关 ...
- SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败
原文:SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败 今天发现队列读取器代理不停地尝试启动但总是出错: 其中内容如下: 队列读取器代理在连接"Publicati ...
- 使用scratchbox2建立交叉编译环境
使用scratchbox2建立交叉编译环境,使交叉编译不再烦人..... os:ubuntu 12.04.4 x64 1. 安装相关工具sudo apt-get install debootstrap ...
- C++ 标准库概览(一分钟就看完了)
C++ 标准库以若干头文件的方式提供. 下面简单介绍一个各头文件的内容. 第一部分 容器 Containers <array> C++11 新增.提供了容器类模板 std::array,固 ...
- MySql 小内存优化
MySql5.6启动内存近500M,如在小型机内存敏感的环境可能较大,下边配置会减少较多内存,至150M以下. performance_schema = OFF innodb_buffer_pool_ ...
- QList使用下标[index]才可以获得可修改的item的引用(估计QStringList也是如此)
QList算是最常用的集合了,今儿偶然间需要修改QList中的值,结果郁闷了.QList中提供了replace函数来替换item,但不是修改.而at().value()操作均返回的是const的ite ...
- Spring Boot入门篇(基于Spring Boot 2.0系列)
1:概述: Spring Boot是用来简化Spring应用的初始化开发过程. 2:特性: 创建独立的应用(jar|war形式); 需要用到spring-boot-maven-plugin插件 直接嵌 ...