#转义字符和原生字符

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正则的更多相关文章

  1. Javascript正则对象方法与字符串正则方法总结

    正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...

  2. C#-正则,常用几种数据解析-端午快乐

    在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...

  3. Javascript 中 with 的替代方案和String 中的正则方法

    这几天在升级自己的MVVM 框架,遇到很多小问题,就在这里统一解决了. with 语法 在代码中,要执行这么一个函数 function computeExpression(exp, scope) { ...

  4. JavaScript与PHP中正则

    一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...

  5. Java正则速成秘籍(一)之招式篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  6. Java正则速成秘籍(二)之心法篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  7. Java正则速成秘籍(三)之见招拆招篇

    导读 正则表达式是什么?有什么用? 正则表达式(Regular Expression)是一种文本规则,可以用来校验.查找.替换与规则匹配的文本. 又爱又恨的正则 正则表达式是一个强大的文本匹配工具,但 ...

  8. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  9. [Python基础知识]正则

    import re str4 = r"^http://qy.chinahr.com/cvm/preview\?cvid=\w{24,25}&from=sou&gtid=\w{ ...

  10. iOS中使用正则

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

随机推荐

  1. 关于 IIS 上运行 ASP.NET Core 站点的“HTTP 错误 500.19”错误

    昨天回答了博问中的一个问题 —— “HTTP 错误 500.19 - Internal Server Error dotnetcore”,今天在这篇随笔中时候事后诸葛亮地小结一下. 服务器是 Wind ...

  2. linuxC动态内存泄漏追踪方法

    C里面没有垃圾回收机制,有时候你申请了动态内存却忘记释放,这就尴尬了(你的程序扮演了强盗角色,有借有还才是好孩子).当你想找出内存泄露的地方时,有的投入海量的代码中,头痛不已.还好GNU C库提供了些 ...

  3. ASP.NET CORE系列【六】Entity Framework Core 之数据迁移

    原文:ASP.NET CORE系列[六]Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framew ...

  4. delphi获取dll的函数列表

    找了几个,终于找到一个好用的 function GetDLLFileExports( szFileName: PChar;  mStrings: TStrings): Boolean;var  hFi ...

  5. WPF常见内存泄露

    Event handlers leak This type of leak occurs when subscribing an object (let's call it listener) to ...

  6. 基于Spring开发

    1. XML Schema 1.1 最简单的标签 一个最简单的标签,形式如: <bf:head-routing key="1" value="1" to= ...

  7. OAUTH2 SAML2.0

    OAuth2 - http://www.cnblogs.com/linianhui/p/oauth2-authorization.html SAML - wikipedia Shibboleth / ...

  8. c#透明panel

    先看下效果 纯透明的pane,然后设置一个半透明的图片,可以看出来显示了父控件的button 看代码 public partial class PanelEx : Panel { protected ...

  9. delphi7 xml通用解析转换为stringgrid

    对于有n多记录的xml,可以填充到stringgrid中 其中 vkeynode 为 xml中 重复节点 function CommonAnalyzeXml(vxml,vkeynode: string ...

  10. SYN2306A型 GPS北斗双模授时板

    SYN2306A型 GPS北斗双模授时板 北斗gps时钟北斗授时设备北斗时钟同步系统使用说明视频链接: http://www.syn029.com/h-pd-211-0_310_36_-1.html ...