#转义字符和原生字符

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. MultiBinding

    <StackPanel> <Slider x:Name="sl1" Minimum="10" Maximum="100"/ ...

  2. MVC 自定义路由规则

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mv ...

  3. WPF之VirtualizingStackPanel.IsVirtualizing="False"

    原文:WPF之VirtualizingStackPanel.IsVirtualizing="False" 相信从winform转到wpf的人都遇到过这样的困惑,在处理DataGri ...

  4. Qt4可以使用trUtf8函数,其内容可以是中文,也可以是\F硬编码

    显示在textBrowser->setText 中文乱码 转成QObject::trUtf8即可. ui->textBrowser->setText((QObject::trUtf8 ...

  5. QString转换为LPTSTR(使用了reinterpret_cast,真是叹为观止,但是也开阔了思路),三篇文章合起来的各种转换方法

    醉了,windows下宏定义了很多char类型 LPTSTR .今天,直接使用,qt报错,真TM费事. 将“CPU”转化为wcha_t * QString str = "CPU"; ...

  6. Python在windows下的服务程序

    Python程序作为Windows服务启动,需要安装pywin32包.下载路径: 我是下载路径 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...

  7. -bash: /root/java/jdk/bin/java: cannot execute binary file

    错误 -bash: /root/java/jdk/bin/java: cannot execute binary file 错误原因 安装的Linux的版本是32位的,下载的软件是64位,版本不兼容, ...

  8. Webpack Waringing Critical dependencies

    报错信息如下: 出错原因先上图: 未注释部分使用了require的同时使用了es6的语法. 官方解释如下: 解决方法就是放开代码中的注释部分,不要使用es6语法

  9. 值得推荐的C/C++框架和库(深度好文)

    [本文系外部转贴,原文地址:http://www.cppblog.com/merlinfang/archive/2014/12/26/209311.html http://coolshell.info ...

  10. Android Java调用Qt写的so库

    有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用.这样人家反编译你的apk,就知道你侵犯了人家的版权.为了达到混淆的目的,我们可以 ...