mport re

'''
# re 模块
regex 正则表达式,正则表达式应用范围:1爬虫;2自动化运维--开发自动化;
# 什么是正则表达式:一套规则: 匹配字符串的规则
# 能做什么 1 检测一个输入的字符串是否合法用户输入内容的时候,要提前做检测 2 从一个大文件中找到索引符合规则的内容
re模块和正则表达式的关系;有了re模块就可以在python 语言中操作正则表达式了
# 字符组 []
[abc] 匹配a,b,c 任意一个字符; [0-9] 匹配0-8 任意一个字符; [a-z] [A-Z][a-zA-z]
[0-9a-z] 数字和字母任意一个字符[0-9][0-9]表示两位数
'''
''''
*****************************一下是重点;正则表达式
元字符:
[0-9]---> \d 表示任意一个数字
[0-9a-zA-Z_] ----> \w 表示数字字母和下划线
#空格 (空格\tab\enter) --->\s
tab --->\t
enter----> \n
空格--->空格
#\W非数字,字母下划线
#\D 非数字
#\S 非空格,TAB enter
#[\d\D] 匹配所有字符
#. 除了换行符外所有字符
#[^\d] 匹配所有非数字
# ^ 匹配一个字符开始 只能从a 开始的
# $ 匹配一个字符结束
#^ 和$把正则表达式写死必须一一匹配
# a表达式|b 表达式 或 ab|cd 把长的部分放在前边
# \ 取消点的特殊意义
# . ^. .$ 举例: 海.----》匹配所有海.所有字符; ^海. -----> 匹配以海为开头的海.的字符; 海.$--> 以海.结尾的字符
# *+?{}综合应用
正则 待匹配对象 匹配结果 说明
李.? 李杰和李莲英和李二棍子李 【李杰,李莲,李二,李】 只匹配李后边一个任意字符
李.* 李杰和李莲英和李二棍子李 [李杰和李莲英和李二棍子,李] 匹配李后边0个或任意多个字符
李.+ 李杰和李莲英和李二棍子李 [李杰和李莲英和李二棍子】 只匹配李后边一个或者多个任意字符
李.{1,2}李杰和李莲英和李二棍子李 [李杰和,李莲英,李二棍] 只匹配李后边一个或二个任意字符
总结: *,+,,? 都属于贪婪匹配,但是,则匹配加?属于惰性匹配
# 字符集 [] [^]
[^] 非的意思,
# 分组() 与或 | [^]
分组 () 约束|描述的内容的范围问题
www\.(oldboy|baidu|jd|taobao)\.com
# 转义符 \ z加\取消特殊意义; r'' 在字符串前加r,让整个字符串不转义
# 贪婪匹配 和不贪婪匹配
# 几个常用的非贪婪匹配:
# *?重复任意次,但尽可能少重复;
# +? 重复1次或更多次,但尽可能少重复
# ??重复0次,或1次,但尽可能少重复
# {n,m}? 重复n到m次,但尽可能少重复
#{n,}? 重复n次以上,但尽可能少重复
# 量词
# {n}次 匹配N次
# {n,} 匹配N次,大于N次
#{n,m} 最少N次,最多M次
# ? 0次,或者1次
# + 1次,或者多次
# * 0次,或者多次
应用实例:
#整数或者小数: \d+(\.\d+)?
#手机号: [1][3-9]\d{9}
#判断用户输入的内容是否合法,如果合法就能查询到结果,如果输入不对就查不到结果
^[1][3-9]\d{9}$
#从一个大文件中找到所有符合规则的内容?
^[1][3-9]\d{9}$
'''
'''
# 贪婪匹配
在量词范围允许的情况尽量多进行匹配;
#惰性匹配 贪婪算法之后 回溯算法
#惰性匹配
在量词后边加? 元字符 量词?
# .*?x 表示匹配任意字符,任意多次苏,但是一旦遇到X就停下来
# .*x 表示匹配任意字符,任意多次,遇到最后一个X才停下来

转义字符:\. \\n \( 原本有特殊意义的字符,到了表达它本身的意义的时候,需要转义
# 原本有特殊意义的内容,放在字符组总,会取消他的特殊意义;
[ ().*+?] 所有的内容在字符中会取消它的特殊意义
[\] 在内容有字符特意义

#[(]
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ 18位身份证,15位身份证
^[1-9]\d{14}(\d{2}[\dx])?$
'''
import re
'''
findall 总是完整的正则进行匹配,显示括号里匹配的内容,获取的一个列表,返回所有的结果。获取所有符合条件的,优先显示分组中的
seearch 获取是一个变量,返回第一个,.group()的结果和group(0)的一致,还是按照完整的正则进行匹配,显示也显示匹配的一个内容,但是我们可以通过给group 方法传参数
#如果我们要查找的内容在一个复杂的环境中,且没有一个突出的与众的不同的特点,甚至会和不需要的杂乱数混合在一起,
#这时候我们就需要把所有的数据统计出来,然后对这个数据进行筛选,把我们真正需要的数据对用正则表达式()
#1 什么是爬虫
'''
import re
#举例说明:
ret=re.findall('a','eva egon yuan')
print(ret) # 返回所有的a
ret=re.search('a','eva egon yuan')
print(ret.group(0))
# 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以
# 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
# # split 分离
# ret= re.split('\d','alex333wusir')
# ret1=re.split('\d(\d)\d','alex333wusir')
# print(ret)
# print(ret1)
#
# sub 替换
# ret=re.ret('\d+,''H','alex333wusir',1) # 替换一次

# compile作用: 针对多次使用的正则表达式,需要多次解析时,可以使用compile先行解析
# ret=re.compile('\d+')
# res=ret.search('alex37176')
#finditer :生成一个迭代器,利用迭代器进行循环取值
# subn 替换一次
#match 以什么为开头的字符 ,以group 取值,作业在用户输入的内容的时候,用来规定字符串
# seach 用来寻找这个字符串中是不是含有满足条件的内容
# 时间 数据量大,优先考虑列表; 列表不能用insert ,列表不能用pop()
# 空间 功能,性能,(时间: 行数,底层执行;空间) ,用户体验
# 分组命名() (?P<name> 对分组起名
# 分组命名的引用 在匹配开始和结束一直的字符串匹配是,后者对前者命名的进行应用
# 在python 使用正则表达式,要加r

python 学习之-----正则表达式的更多相关文章

  1. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  2. Python学习 之 正则表达式

    1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"ab ...

  3. Python学习笔记——正则表达式入门

    # 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...

  4. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  5. python学习日记(正则表达式)

    定义 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. re 模块使 Pyth ...

  6. python学习笔记----正则表达式

    正则: regular expression 常用的场景: #正则的包 >>> import re #match:开头匹配,匹配到,返回一个匹配对象,否则返回None >> ...

  7. python学习笔记——正则表达式regex

    1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...

  8. Python学习 :正则表达式

    正则表达式 python 使用正则表达式(re)来进行匹配引擎搜索 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串” 关于正则表达式 ...

  9. python 学习总结----正则表达式

    正则表达式 应用场景 - 特定规律字符串的查找,切割,替换 - 邮箱格式:URl,IP地址等的校验 - 爬虫项目中,特定内容的提取 使用原则 - 只要使用字符串等函数能解决的问题,就不要使用正则 - ...

  10. python学习-53 正则表达式

    正则表达式 就其本质而言,正则表达式是一种小型的/高度专业化的编程语言,它内嵌在python中,并通过RE模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 1.元字符 - ...

随机推荐

  1. (原创)【B4A】一步一步入门09:xCustomListView,加强版列表、双行带图片、复选框按钮等自定义列表项(控件篇05)

    一.前言 上篇((原创)[B4A]一步一步入门08:ListView,列表.单行.双行.双行带图片.列表项样式(控件篇04))我们讲了ListView,目前官方已经不推荐再使用ListView了,而是 ...

  2. Vue-router与hash与history区别

    vue-router 基本使用   路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home ...

  3. [Linux/CentOS]通过yum获取rpm安装包

    1 yum获取rpm安装包 有时候你需要一个软件包在离线linux系统上安装,如果自己找软件包麻烦,可以linux yum下载需要的软件包. 准备工作是找一台能够联网的linux,并准备好了yum及y ...

  4. [Java EE]辨析: POJO(PO / DTO / VO) | BO/DO | DAO

    概念不清,会很影响开发中的逻辑性和条理性,进而影响接口设计,代码编写的质量. 网络上大家对这些个概念的探究很多,但终究没有一个统一的说法. 不论哪家解释,我觉得最重要的是: 1)词汇之间的解释统一: ...

  5. MySQL主从复制原理剖析与应用实践

    vivo 互联网服务器团队- Shang Yongxing MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上, ...

  6. Terraform 系列-Terraform 简介

    系列文章 Terraform 系列文章 前言 最近在使用 Terraform 来置备 OCI 的 Always Free Tier, 发现它非常好用.总结学习下:Terraform 的基础知识. 什么 ...

  7. 无法使用Resource注解

    问题描述: 学习Spring框架的时候,发现无法使用@Resource注解,只能使用@Autowired注解. 问题原因: JDK11删除了javax.annotation包,需要导入,否则无法使用@ ...

  8. Go语言实现网盘系统(未完)

    该项目将基于go-zero和xorm go-zero中文文档: https://legacy.go-zero.dev/cn/ Xorm中文文档: http://xorm.topgoer.com/ 功能 ...

  9. Python代码相似度计算(基于AST和SW算法)

    代码相似度计算将基于AST和Smith-Waterman算法 AST (抽象语法树) AST即Abstract Syntax Trees,是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中 ...

  10. 利用机器人类Robot写出自动登录QQ的小代码

    最近写了一个小代码控制鼠标键盘使他自己登录QQ,下面给大家分享下这一小代码. 这段小程序是用Java里的Robot类实现的,控制鼠标键盘的一个机器人类. 我们想要实现自动登录QQ首先得想要做到这一步需 ...