正则表达式

内容概要


  • 正则表达式前戏
  • 正则表达式之字符组
  • 正则表达式特殊符号
  • 正则表达式量词
  • 正则表达式贪婪与非贪婪匹配
  • 正则表达式取消转义
  • python内置模块之re模块

内容详情


正则表达式前戏

# 京东注册页面获取手机号
有很多校验规则
必须是11位的纯数字 并且必须是常规的手机号开头(13,15,17,18,19)
# 上述的规则能否使用python代码实现
'''python实现手机校验功能'''
1.获取用户的手机号
phone_num = input('请输入您的手机号>>>:').strip()
2.先校验是否是11位
if len(phone_num) == 11:
3.再校验是否是纯数字
if phone_num.isdigit():
4.校验开头是否合法(随便写几个意思一下)
if phone_num.startswith('13') or phone_num.startswith('15') or phone_num.startswith('17') or phone_num.startswith('18'):
print('是一个正常的手机号')
else:
print('手机号开头不合法')
else:
print('手机号必须是纯数字')
else:
print('手机号必须是11位') # 使用正则表达式
'''正则表达式实现手机校验功能'''
import re
phone_number = input('please input your phone number : ').strip()
if re.match('^(13|14|15|18)[0-9]{9}$', phone_number):
print('是合法的手机号码')
else:
print('不是合法的手机号码')
"""
正则表达式是一门独立的语言 专门用来匹配、校验、筛查所需的数据
任何编程语言都可以使用 在python中如果想用就必须借助于内置模块re
""" # 用自己的话概括>>>:什么是正则表达式
利用一些'特殊符号'的组合去字符串中筛选出想要的数据
所以学习正则很大程度上就是在学习一些特殊符号的使用
'''在匹配筛选查找数据的时候可以使用正则提供的符号也可以直接写目标数据'''

正则表达式之字符组

# 在线测试网站:http://tool.chinaz.com/regex/
'''单个字符组默认一次只匹配一个字符'''
[0123456789] 匹配0到9之间的任意一个数字
[0-9](简写) 匹配0到9之间的任意一个数字
[a-z] 匹配a到z之间的任意一个小写字母
[A-Z] 匹配A到Z之间的任意一个大写字母
[0-9a-zA-Z] 匹配任意一个数字或者大小写字母(没有顺序)

正则表达式特殊符号

# 特殊符号默认也是一次匹配一个字符
. 匹配除换行符以外的任意字符
\w 匹配数字、字母、下划线(后续筛选变量名可能用到)
\d 匹配任意的数字
\t 匹配一个制表符(tab键)
^ 匹配字符串的开始 eg:^9 找9并且这个9必须在开头
$ 匹配字符串的结尾 eg:9$ 找9并且这个9必须在末尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
a|b 匹配a或者b 管道符就是or(或)的意思
() 给正则表达式分组 不影响正则匹配(后续再讲)
[] 字符组的概念(里面所有的数据都是或的关系)
[^] 上箭号出现在了中括号的里面意思是取反操作

正则表达式量词

# 量词必须跟在表达式的后面 不能单独使用 目的是增加匹配的字符数
'''注意量词默认都是贪婪匹配(尽可能多的匹配)'''
* 重复零次或者多次(默认就是多次:越多越好)
+ 重复一次或者多次(默认就是多次:越多越好)
? 重复零次或者一次(默认就是一次:越多越好)
{n} 重复n次
{n,} 重复最少n次最多多次(越多越好)
{n,m} 重复n到m次(越多越好)

正则表达式贪婪与非贪婪匹配

# 正则    # 待匹配的文本    # 结果
<.*> <script>alert(123)<script> 1条 贪婪匹配
以最后一个大括号的出现作为结束标志
<.*?> <script>alert(123)<script> 2条 非贪婪匹配
以第一个大括号的出现作为结束标志 量词默认都是贪婪匹配 如果想修改为非贪婪匹配 只需要在量词的后面加?即可
贪婪非贪婪通常都是利用左右两边的条件作为筛选依

正则表达式取消转义

\n       \n     False
\\n \n True
\\\\n \\n True
在python中还可以在字符串的前面加r取消转义 更加方便

python内置模块之re模块

# 在python中无法直接使用正则 需要借助于模块
1.内置的re模块
2.第三方的其他模块 import re res = re.findall('a', 'jason oscar aaa') # findall(正则表达式,待匹配的文本)
print(res) # ['a', 'a', 'a', 'a', 'a'] # 结果是所有符合条件的数据 并且组织成了列表 res1 = re.search('a', 'jason oscar aaa') # search(正则表达式,待匹配的文本)
print(res1) # 查找到一个符合条件的数据就结束 没有则返回None
print(res1.group()) # a 没有则无法调用group() 直接报错 res2 = re.match('j', 'jason oscar aaa') # match(正则表达式,待匹配的文本)
print(res2) # None 从字符串的开头匹配 如果没有则直接返回None 类似于给正则自动加了^ 如果符合也只获取一个就结束
print(res2.group()) # j 没有则无法调用group() 直接报错 res3 = re.finditer('a', 'jason oscar aaa') # finditer(正则表达式,待匹配的文本)
print(res3) # 结果是一个迭代器对象 为了节省空间
print([obj.group() for obj in res3]) # ['a', 'a', 'a', 'a', 'a'] obj = re.compile('\d+') # 提前写好后续需要经常使用的正则
print(re.findall(obj,'asjd21hj13123j')) # 写一遍之后 直接反复调用即可
print(re.findall(obj,'234328748hgjghj')) # 写一遍之后 直接反复调用即可
print(re.findall(obj,'jhjhjh423432423')) # 写一遍之后 直接反复调用即可

模块re正则的更多相关文章

  1. python——re模块(正则表达)

    python——re模块(正则表达) 两个比较不错的正则帖子: http://blog.csdn.net/riba2534/article/details/54288552 http://blog.c ...

  2. 常用的re模块的正则匹配的表达式

    07.01自我总结 常用的re模块的正则匹配的表达式 一.校验数字的表达式 1.数字 ^[0-9]\*$ 2.n位的数字 ^\d{n}$ 3.至少n位的数字 ^\d{n,}$ 4.m-n位的数字 ^\ ...

  3. re模块和正则

    正则表达式:就是用来筛选字符串中特定内容的一串具有某种逻辑规则的字符组成.正则表达式不是Python独有的,而是一门独立的技术,它在所有的编程语言中都有使用,在Python中使用就必须依赖于re模块. ...

  4. 模块 re_正则

    模块re_正则 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我 ...

  5. python--------------常用模块之正则

    一.认识模块  什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件 ...

  6. 爬虫模块介绍--Beautifulsoup (解析库模块,正则)

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...

  7. python常用模块之re模块(正则)

    python种的re模块常用的5种方法,分别是re.match   re.search  re.findall  re.split  re.sub. 在介绍五种方法之前,需要介绍一下正则的基础. . ...

  8. python全栈开发从入门到放弃之常用模块和正则

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  9. python模块之正则

    re模块 可以读懂你写的正则表达式 根据你写的表达式去执行任务 用re去操作正则 正则表达式 使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容.在线测试网站:http:/ ...

  10. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

随机推荐

  1. Android点击按钮退出程序并提醒

    效果展示: MainActivity.java import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDia ...

  2. mysql-加密函数

    1.PASSWORD(str)一般对用户的密码加密 不可逆 2.MD5(str) 普通加密 不可逆 3.ENCODE(str,pswd_str) 加密函数,结果是一个二进制数,必须使用 BLOB 类型 ...

  3. sql server学习总结一

    一,数据库的三级模式结构 1.    模式 模式又称逻辑模式或者概念模式,是数据库中全体数据的逻辑结构和特征的描述,一个数据库只有一个模式,模式处于三级结构的中间层. 2.    外模式 外模式又称用 ...

  4. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  5. 现代 CSS 解决方案:Modern CSS Reset

    在早年间(其实也不是很早),写过几篇关于 CSS Reset 的文章 - reset.css 知多少. 详细描述了当时业界比较常用的,两个 CSS reset 方案:reset.css 与 Norma ...

  6. 从源码学习UEToll

    从源码学习UEToll 捕获控件梳理 相对位置功能梳理 网格栅栏功能梳理 捕获代码分析 TransparentActivity public @interface Type { int TYPE_UN ...

  7. Myeclipse+svn相关文章

    Myeclipse安装svn插件https://www.cnblogs.com/liuyk-code/p/7519886.html 使用svn https://jingyan.baidu.com/ar ...

  8. OV5640图像采集(一)VGA显示

    vga控制器模块 1 引言  项目的背景是采集无人车间现场的工件图像并送往控制间pc端处理,最终实现缺陷检测.项目包括图像采集模块,数据传输模块,上位机,缺陷检测算法等四个部分.其中,图像采集模块又分 ...

  9. busybox+linux Deplay 手机服务器

    环境下载地址: Linux Deplay:     https://github.com/meefik/linuxdeploy/releases Busybox       :     https:/ ...

  10. C++实例2--职工管理系统

    职工管理系统 1.  头文件 1.1 workerManager.h 系统类 1 #pragma once // 防止头文件重复包含 2 #include<iostream> // 包含输 ...