Python基础知识(24):正则表达式

正则表达式:检查一个字符串是否与某个模式匹配

\d :匹配数字

\w :匹配字母或数字

. :匹配任意字符

{n} :匹配n个字符

{m,n} :匹配m到n个字符

\s :匹配空格

a|b :匹配a或b

^ :匹配字符串开头

$ :匹配字符串结尾

* :匹配0个或多个

+ :匹配1个或多个

? :匹配0个或1个

[abc] :匹配a、b或c

[^abc] :匹配除了a、b、c以外的

re模块:包含正则表达式的所有功能

建议使用Python的r前缀,如r‘\d’

由于Python的字符串本身也用\转义,所以要特别注意

1、match:匹配字符串

import re
m = re.match(r'\d{3}\-\d{3,8}',r'010-23456')
print(m) 结果:
<_sre.SRE_Match object; span=(0, 9), match='010-23456'>

2、search:扫描

import re

s = re.search(r'(.com)',r'someone@gmail.com')
print(s) 结果:
<_sre.SRE_Match object; span=(13, 17), match='.com'>

3、split:切分字符

import re

s = re.split(r'[\,]',r'hello,world')
print(s) 结果:
['hello', 'world']

4、sub:替换

import re

sen = 'Hello2018, 12world06.'
sen1 = re.sub(r'\d', '', sen)
print(sen1) 结果:
Hello, world.

5、group:分组

import re

sen = re.match(r'^(\d{3})-(\d{3,8})$', '010-23456')
print(sen.group(0))
print(sen.group(1))
print(sen.group(2)) 结果:
010-23456
010
23456

验证Email地址的正则表达式

#验证Email地址的正则表达式
import re sen1 = r'someone@gmail.com'
sen2 = r'bill.gates@microsoft.com'
sen3 = r'bob#example.com'
sen4 = r'mr-bob@example.com'
m = r'[\w\.]+\@[\w]+\.(com)'
print(re.match(m,sen1))
print(re.match(m,sen2))
print(re.match(m,sen3))
print(re.match(m,sen4)) 结果:
<_sre.SRE_Match object; span=(0, 17), match='someone@gmail.com'>
<_sre.SRE_Match object; span=(0, 24), match='bill.gates@microsoft.com'>
None
None

资料来源:

1、廖雪峰官网:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143193331387014ccd1040c814dee8b2164bb4f064cff000

2、菜鸟教程:http://www.runoob.com/python3/python3-reg-expressions.html

Python学习之旅(二十五)的更多相关文章

  1. python学习之旅(十五)

    Python基础知识(14):函数(Ⅴ) 一.装饰器 decorator:本质上就是函数,可以增强函数的功能. 定义起来虽然有点复杂,但使用起来非常灵活和方便 1.不修改被装饰函数的源代码 2.不修改 ...

  2. Python学习笔记(二十五)操作文件和目录

    摘抄:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319253241 ...

  3. python学习笔记(二十五)重写父类方法

    python继承中,如果子类在调用某个方法时,它首先是从派生类(也就是当前类)中去找对应的方法,如果当前类中找不到对应的方法,就会去基类(派生类)中去逐个查找. 若父类的方法不能满足子类的需要,那么子 ...

  4. C#学习基础概念二十五问

    C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...

  5. Python学习之旅(十二)

    Python基础知识(11):高级特性 一.分片(切片) 通过索引来获取一定范围内的元素 #字符串 s="Alice" s[0:4:2] 结果: 'Ai' #列表 l=[1,2,3 ...

  6. Python学习笔记【第十五篇】:Python网络编程三ftp案例练习--断点续传

    开发一个支持多用户在线的FTP程序-------------------主要是学习思路 实现功能点 1:用户登陆验证(用户名.密码) 2:实现多用户登陆 3:实现简单的cmd命令操作 4:文件的上传( ...

  7. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  8. 【Java学习笔记之二十五】初步认知Java内部类

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...

  9. python学习笔记(二十八)日志模块

    我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...

  10. python学习笔记:(十五)迭代器和生成器

    一.迭代器: 1.迭代器是python最强大的功能之一,是访问集合元素的一种方式. 2.迭代器是一个可以记住遍历的位置的对象. 3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束.迭代 ...

随机推荐

  1. 使用elasticsearch分页时报max_result_window is too large的错误解决方案

    使用elasticsearch进行深度分页查询时的size-from大于10000的时候,会提示一个max_result_window is too large的错误. 官方推荐是scroll查询返回 ...

  2. Nginx——location常见配置指令,alias、root、proxy_pass

    1.[alias] 别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向[alias]配置的路径.如: location /test/ { alias /home/sftp/i ...

  3. MySQL processlist中需要关注的状态

    一般而言,我们在processlist结果中如果经常能看到某些SQL的话,至少可以说明这些SQL的频率很高,通常需要对这些SQL进行进一步优化. 今天我们要说的是,在processlist中,看到哪些 ...

  4. matplotlib 与 seaborn 中出现中文乱码的解决方法

      Linux.Mac osx 系统中,出现 matplotlib 或 seaborn 绘图中有中文乱码的情形,可以考虑使用以下方式处理: 到 anaconda 的 matplotlib 中查看是否有 ...

  5. nginx(二)支持websocket配置

    在默认的配置nginx.conf文件中做如下配置改动 一.http域的设置 http { include mime.types; default_type application/octet-stre ...

  6. Fedora 25-64位操作系统中安装配置Hyperledger Fabric过程

    安装过程参照Hyperledger Fabric的官方文档,文档地址:http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html 0 ...

  7. 创建一个Django项目的基本步骤

    创建一个Django 的常规步骤 1.寻找一个磁盘目录,比如 e: 2.django-admin startproject ops 3.cd ops 4.python manage.py starta ...

  8. csproj文件中copy指令的使用方式

    实际开发中有很多项目需要引用第三方的dll或者资源文件,且文件比较多,在运行时这些文件需要被拷贝到BIN目录. 使用VS自带的"复制到输出目录",似然方便,但是比较不零活,经过多次 ...

  9. ftp软件中保持连接命令CWD、PWD、LIST、NOOP四个操作命令解析

    转自:http://www.aspjzy.com/A/148.html 各位站长都知道,我们在维护网站的时候,经常需要一直保持ftp连接状态,这个时候在很多ftp客户端软件中都有一个保持全局连接的选项 ...

  10. 记录php中一种骚操作

    $options = array( 'config' => array( 'aaa' => 111, 'bbb' => 222, ), 'headers' => array( ...