Python正则表达式讲解

什么是正则表达式?

  正则表达式,又称规则表达式(英文:Regular Expression,在代码中简写为regex,regexp或re),计算机科学的一个概念,正则表达式通常被用来检索、替换那些符合某个规则的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个‘规则字符串’,这个‘规则字符串’用来表达对字符串一种过滤逻辑。更多关于正则表达式介绍,点击这里进入百度百科。

怎么使用正则表达式?

  首先,需要导入re模块,因为关于正则表达式处理的功能函数都在这个模块内

  import re

re模块共分为5个功能函数:

  • match 从头开始匹配
  • search 使用最多,在整个文本搜索
  • findall 取到所有符合逻辑的字符串
  • split 分割
  • sub 替换

正则表达式符号:

‘.‘ 默认匹配除了\n以外的任意一个字符
‘^‘ 匹配字符开头
‘$‘ 匹配字符结尾
‘*‘ 匹配*号前的字符0次或者多次
‘+‘ 匹配前一个字符1次或多次
‘?‘ 匹配前一个字符1次或0次
‘{m}‘ 匹配前一个字符m次
‘{n,m}‘ 匹配前一个字符n到m次
‘|‘ 匹配|左或|右的字符
‘(...)‘ 分组匹配
‘\A‘ 只从字符开头匹配
‘\Z‘ 匹配字符结尾,和$一样
‘\d‘ 匹配0到9的数字
‘\D‘ 匹配非数字
‘\w‘ 匹配[A-Za-z0-9]
‘\W‘ 匹配非[A-Za-z0-9]
‘s‘ 匹配空白字符

基础的说完了,下面看看如何使用强大的正则来处理字符串吧

比如说,现在一顿学生的学号和姓名在一块,我现在需要把他们的学号取出来如何去呢?(注:学号是12位的,都是数字)

逻辑分析:上面说的学号是12位的,每个学生的姓名都是英文字母,结合正则表达式字符来解释,取出姓名就可以写成[a-z]+,取出学号可以写成[0-9]{12},因为匹配整个字符串,所以要使用findall函数

下面我们使用代码来测试下:

1 import re
2
3 z = ‘[0-9]{12}‘
4 z1 = ‘[a-z]+‘
5 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘
6 s1 = re.findall(z1,str)
7 s= re.findall(z,str)
8 print(s1)
9 print(s)

运行结果

[‘xiaoming‘, ‘xiaogang‘, ‘xiaoli‘]
[‘202201056234‘, ‘201023415674‘, ‘222278564356‘]

这只是一些简单的例子,对于正则表达式需要不断的练习,网上有很多的在线正则表达式测试的连接,可以去学习学习

sub替换匹配到的字符串:这里是把匹配到的学号替换成1212

1 import re
2
3 z = ‘[0-9]{12}‘
4 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘
5 s= re.sub(z,‘1212‘,str)
6 print(s)

运行结果

xiaoming1212xiaogang1212xiaoli1212

通过split来分割字符串:通过学号来分割字符串

1 import re
2
3 z = ‘[0-9]{12}‘
4 str = ‘xiaoming202201056234xiaogang201023415674xiaoli222278564356‘
5 s= re.split(z,str)
6 print(s)

运行结果

[‘xiaoming‘, ‘xiaogang‘, ‘xiaoli‘, ‘‘]

这里的结果为什么会在最后多处一个‘’。以为我们分割的时候在最后面的字符串是一个学号,所以说会多出来一个

这里我下面写几个正则表达式的匹配规则,大家结合上面的正则表达式符号看看能不能理解为什么这样写

匹配身份证号:^[1-9][0-7]\d{4}((19\d{2}(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(19\d{2}(0[13578]|1[02])31)|(19\d{2}02(0[1-9]|1\d|2[0-8]))|(19([13579][26]|[2468][048]|0[48])0229))\d{3}(\d|X|x)?$。这里知识匹配的格式是否正确

匹配邮箱:^[a-z0-9A-Z]+[- | a-z0-9A-Z . _][email protected]([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$

匹配中文:[\u4e00-\u9fa5]+

原文地址:https://www.cnblogs.com/mCarrYoung/p/9977073.html

时间: 2024-08-05 18:33:43

Python正则表达式讲解的相关文章

Python正则表达式Regular Expression基本用法

资料来源:http://blog.csdn.net/whycadi/article/details/2011046   直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表达式re模块的基本函数. (1)findall函数的用法 findall(rule,target[,flag])是在目标字符串中找到符合规则的字符串.参数说明:rule表示规则,target表示目标字符串,[,flag]表示的是规则选项.返回的结果是一个列表.若没找到符合的,是一个空列表. 如: 因

Python 正则表达式模块 (re) 简介

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能满足所有复杂的匹配情况,但足够在绝大多数情况下能够有效地实现对复杂字符串的分析并提取出相关信息.Python 会将正则表达式转化为字节码,利用 C 语言的匹配引擎进行深度优先的匹配. Python 正则表达式语法 正则表达式可以包含普通字符和特殊字符,普通字符(比如数字或者字母)可以直接对目标字符串

python正则表达式入门与提高

自己最近学习了正则表达式,整理了一些关于Python的优秀博文,大家可以拿来参考学习: 1. google 搜索引擎排名第一的 ”Python正则表达式“ http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 但作为初学者来说,此文比较硬骨头,不建议. 2. 深入浅出学习Python 正则表达式 http://woodpecker.org.cn/diveintopython/regular_expressions/index.ht

Python正则表达式,这一篇就够了!

大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中关于 正则表达式的函数. re模块主要定义了9个常量.12个函数.1个异常,每个常量和函数猪哥 都会通过实际代码案例讲解,让大家能更直观的了解其作用! 注:为避免出现代码格式错乱,猪哥尽量使用代码截图演示哦. 一.re模块简介 聊到Python正则表达式的支持,首先肯定会想到 re 库,这是一个Python处理文本的 标准库. 标准库 的意思表示这是一个 Py

python正则表达式re

1. 正则表达式简介 正则表达式并不是Python的一部分.在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别 只在于不同的编程语言实现支持的语法数量不同:但不被支持的语法通常是不常用的部分.python正则表 达式是用于文本匹配的强大工具,在源字符串中查找与给定的正则表达式相匹配的部分.一个正则表达式 是由字母.数字和特殊字符(括号.星号和问号等)组成. 正则表达式中的特殊字符:^      正则表达式的开始字符$      正则表达式的结束字符\w     匹配字母.数字.下划线,

python正则表达式详解

python正则表达式详解 正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的.下面,我来介绍一下python中的正则表达式是怎么使用的. 首先,python中的正则表达式大致分为以下几部分: 元字符 模式 函数 re 内置对象用法 分组用

python正则表达式

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程. 注意:本文基于Python2.4完成:如果看到不明白的词汇请记得百度谷歌或维基,whatever. 尊重作者的劳动,转载请注明作者及原文地址 >.<html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法

python 正则表达式基础

又一段时间没写博客了 最近一段时间在写pygame 又忽略了博客 今天因要帮朋友修改电影字幕 用到了正则表达式 重新学了一遍 发现还是得多练 才能算渐渐掌握 python 正则表达式 1.1介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持

python正则表达式-findall

python正则表达式-findall #coding=utf-8 import re ''' # 获取匹配的的内容 ''' p = re.compile(r'\d+') print '找出所有的数字',p.findall('one1two2three3four4') ''' # 获取匹配的的内容-比较复杂的例子 ''' unicodePage ='<div class="content" title="2015-02-22 00:08:46">i am