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. Spring MVC处理参数Convert

    Springmvc.xml 配置convert,xml中配置多个相同的泛型时,xml里配置的convert会从上到下挨个执行. <!-- 配置注解驱动,并配置convert --> < ...

  2. zsh禁用自动更新

    编辑.oh-my-zsh/oh-my-zsh.sh文件 set DISABLE_AUTO_UPDATE = false # Check for updates on initial load... i ...

  3. js中this绑定方式及如何改变this指向

    this的绑定方式基本有以下几种: 隐式绑定 显式绑定 new 绑定 window 绑定 箭头函数绑定 隐式绑定 第一个也是最常见的规则称为 隐式绑定. var a = { str: 'hello', ...

  4. vue 利用路由跨页传参

    第一页,点击进入第二页进行传值: <template> <div id="app"> <div><router-link to=" ...

  5. 在verilog中使用格雷码

    格雷码的一些知识: https://baike.baidu.com/item/%E6%A0%BC%E9%9B%B7%E7%A0%81/6510858?fr=aladdin 绿色框起来的是0--15的格 ...

  6. List转换数组 数组转换List

    数组转List package listtoArray; import java.util.ArrayList;import java.util.Arrays;import java.util.Col ...

  7. 将积累多年的java学习资料,pdf文档给大家分享一下,比如《大话设计模式》《算法》《Linux私房菜》等等

    话不多说,资料目录如下,需要的拿走,下载的同时别忘了点下推荐. 需要的点下面链接,到小编网盘进行下载: 2-大话设计模式.pdf 链接:https://pan.baidu.com/s/1b05puNO ...

  8. Django框架(一)-- Django简介

    django(Python Web框架) Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗 ...

  9. Ajax请求设置csrf_token

    方式1 通过获取隐藏的input标签中的csrfmiddlewaretoken值,放置在data中发送. $.ajax({ url: "/cookie_ajax/", type: ...

  10. 微软源码站点-C#编程指南

    地址:https://referencesource.microsoft.com/#System.Web/HttpPostedFile.cs 微软的源码可以在这里看. ---------------- ...