TOC

re模块

在python中,若想使用正则表达式,必须通过re模块来实现

import re

一、什么是正则表达式与re模块?

正则表达式是一门独立的技术, 任何语言都可以使用正则表达式,

正则表达式是由一堆特殊的字符组合而来的。

1.1 字符组

  • 字符组:

    • [0-9] 可以匹配到一个0-9的字符
    • [9-0]: 报错, 必须从小到大
    • [a-z]: 从小写的a-z
    • [A-Z]: 从大写A-Z
    • [z-A]: 错误, 只能从小到大,根据ascii表来匹配大小。
    • [A-z]: 总大写的A到小写的z。

    注意: 顺序必须要按照ASCII码数值的顺序编写。

1.2 元字符

1.2.1 单个使用

1.2.2 组合使用

  • 组合使用

    • \w\W: 匹配字母数字下划线与非字母数字下划线,匹配所有。
    • \d\D: 无论是数字或者非数字都可以匹配。
    • \t: table
    • \n: 换行
    • \b: 匹配单词结尾,tank jasonk
    • ^: startswith
      • '^'在外面使用: 表示开头。
      • [^]: 表示取反的意思。
    • $: endswith
    • ^$: 配合使用叫做精准匹配,如何限制一个字符串的长度或者内容。
    • |: 或。ab|abc如果第一个条件成立,则abc不会执行,怎么解决,针对这种情况把长的写在前面就好了,一定要将长的放在前面。
    • [^...]: 表示取反的意思。
    • [^ab]: 代表只去ab以外的字符。
    • [^a-z]: 取a-z以外的字符。

二、为什么要使用正则

比如要获取“一堆字符串”中的“某些字符”,

正则表达式可以帮我们过滤,并提取出想要的字符数据。

  • 比如过滤并获取 “tank”
'wafawrjkwagfiu21knriut8ankjfdgau0q92ru20yrisana tank wyqfwqrqyr9q 9'
```python
import re
str1 = 'wafawrjkwagfiu21knriut8ankjfdgau0q92ru20yrisana tank wyqfwqrqyr9q 9'
res = re.findall('tank', str1)
print(res)
  • 应用场景:

    • 爬虫: re, BeautifulSoup4, Xpath, selector
    • 数据分析过滤数据: re, pandas, numpy...
    • 用户名与密码、手机认证:检测输入内容的合法性
    • 过滤关键字

三、如何使用

3.1 re模块的三种比较重要的方法

3.1.1 findall()

可以匹配 "所有字符" ,拿到返回的结果,返回的结果是一个列表。

import re
str1 = 'sean tank json'
# findall
res = re.findall('[a-z]{4}', str1)
print(res)

3.1.2 search()

在匹配一个字符成功后,拿到结果后结束,不往后匹配。

import re
str1 = 'sean tank json'
# search
res = re.search('[a-z]{4}', str1)
print(res) # 返回的是一个对象
print(res.group()) # 从对象中取值 <re.Match object; span=(0, 4), match='sean'>
sean

3.1.3 match()

从匹配字符的开头匹配,若开头不是想要的内容,则返回None。

import re
str1 = 'sean tank json'
# match
res = re.match('sean', str1)
print(res)
print(res.group()) <re.Match object; span=(0, 4), match='sean'>
sean # 如果没有匹配到则会返回None,然后打印的时候会出错
None
Traceback (most recent call last):
File "G:/python项目/day17/re模块.py", line 11, in <module>
print(res.group())
AttributeError: 'NoneType' object has no attribute 'group'
# 因此我们可以加一个if判断句,可以避免上面的问题
import re
str1 = 'sean tank json'
# match
res = re.match('12', str1)
print(res) if res:
print(res.group())

四、示例

4.1 检测手机号码的合法性

# 纯python校验
while True:
phone_number = input('请输入手机号码:').strip()
# not > and > or
if len(phone_number) == 11 and (phone_number.startswith(
'13'
) or phone_number.startswith(
'14'
) or phone_number.startswith(
'15'
) or phone_number.startswith(
'19'
)):
print('手机号码合法!')
break else:
print('手机号码不合法!') # re校验
import re
while True:
phone_number = input('手机号:')
if re.match('^(13|14|15|19)[0-9]{9}', phone_number):
print('合法')
break
else:
print('不合法')

正则表达式之re模块的更多相关文章

  1. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  2. 【转】Python之正则表达式(re模块)

    [转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...

  3. 【Python爬虫】正则表达式与re模块

    正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...

  4. Python与正则表达式[0] -> re 模块的正则表达式匹配

    正则表达式 / Regular Expression 目录 正则表达式模式 re 模块简介 使用正则表达式进行匹配 正则表达式RE(Regular Expression, Regexp, Regex) ...

  5. python 正则表达式re使用模块(match()、search()和compile())

    摘录 python核心编程 python的re模块允许多线程共享一个已编译的正则表达式对象,也支持命名子组.下表是常见的正则表达式属性: 函数/方法 描述 仅仅是re模块函数 compile(patt ...

  6. python学习笔记(十)——正则表达式和re模块

    #正则表达式和re模块 # match(pattern, string,[flag]) #在字符串开始时进行匹配 # pattern 正则表达式 # string 要匹配的字符串 # [flag] 可 ...

  7. python正则表达式之re模块方法介绍

    python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...

  8. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

  9. pytho day6 <正则表达式、常用模块、反射>

    本节介绍: 一:正则表达式: 正则表达并不是python 独有的.在各个语言里都有该语法的介绍.正则表达是处理字符串的强大的处理工具.拥有自己的独特的 处理方法.和处理引擎.虽然性能没有python ...

随机推荐

  1. 同步fifo与异步fifo

    参考以下帖子: https://blog.csdn.net/hengzo/article/details/49683707 https://blog.csdn.net/Times_poem/artic ...

  2. 跨域漏洞丨JSONP和CORS跨域资源共享

    进入正文之前,我们先来解决个小问题,什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 跨域常见的两种方式,分别是JSONP和CORS. 今天i ...

  3. 基于RGB与HSI颜色模型的图像提取法

    现实中我们要处理的往往是RGB彩色图像.对其主要通过HSI转换.分量色差等技术来提出目标. RGB分量灰度化: RGB可以分为R.G.B三分量.当R=G=B即为灰度图像,很多时候为了方便,会直接利用某 ...

  4. python常用库(转)

    转自http://www.west999.com/info/html/wangluobiancheng/qita/20180729/4410114.html Python常用的库简单介绍一下 fuzz ...

  5. discuz支持的mysql的配置(docker版本)

    作个笔录. conf/discuz.conf [client] port=3306 default-character-set=utf8 [mysqld] port=3306 default-stor ...

  6. Python并发编程内容回顾

    Python并发编程内容回顾 并发编程小结 目录 • 一.到底什么是线程?什么是进程? • 二.Python多线程情况下: • 三.Python多进程的情况下: • 四.为什么有这把GIL锁? • 五 ...

  7. 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 团队名称 快活帮 作业学习目标 (1)掌握软 ...

  8. Consul 学习资料

    资料 网址 Consul 入门指南 https://book-consul-guide.vnzmi.com/

  9. mysql在windows(含客户端工具)及linux(yum)环境下安装

    下载 地址:https://dev.mysql.com/downloads/ windows安装包下载 linux安装包下载 https://dev.mysql.com/downloads/mysql ...

  10. 架构篇 | 带你轻松玩转 LAMP 网站架构平台(一)

    作者 | JackTian 微信公众号 | 杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(微信ID:Hc220066)备注:来自博客园 1.什么是 LAMP 架构? LAMP 架 ...