版权所有,未经许可,禁止转载



正则表达式是组成搜索模式的字符序列。

正则表达式用于按指定的搜索模式搜索字符串。

正则表达式(RegEx)模块

Python有一个名为re的内置包,用来处理正则表达式。

示例

导入re模块:

import re

Python中的正则表达式

导入re模块后,就可以开始使用正则表达式:

示例

搜索字符串,查看是否以“the”开头,以“Spain”结尾:

import re

txt = "The rain in Spain"
x = re.search("^The.*Spain$", txt)

正则表达式函数

re模块提供了一组函数,用于搜索匹配的字符串:

函数 描述
findall 返回包含所有匹配项的列表
search 如果文本中有匹配项,则返回匹配对象
split 使用字符串分割文本,返回文本被分割后的列表
sub 用字符串替换一个或多个匹配项/td>

元字符

元字符是具有特殊意义的字符:

字符 描述 例子
[] 字符集合 "[a-m]"
\ 标志特殊转义字符(也可以用来转义特定字符) "\d"
. 任何字符(换行字符除外) "he..o"
^ 开始文本 "^hello"
$ 结束文本 "world$"
* 0次或多次出现 "aix*"
+ 1次或多次出现 "aix+"
{} 确定的出现次数 "al{2}"
| 或者 "falls|stays"
() 捕获并分组  

特殊转义字符

特殊转义字符是\后面跟着下面列表中的某个字符,有特殊的含义:

字符 描述 例子
\A 如果指定字符串位于文本的开头,则返回匹配项 "\AThe"
\b 如果指定字符串位于文本开头或结尾,则返回匹配项 r"\bain"
r"ain\b"
\B 如果指定字符串没有位于文本开头或结尾,则返回匹配项 r"\Bain"
r"ain\B"
\d 如果文本中包含了数字(0-9),返回匹配项 "\d"
\D 如果文本中不包含数字(0-9),返回匹配项 "\D"
\s 返回文本中包含空白字符的匹配项 "\s"
\S 返回文本中不包含空白字符的匹配项 "\S"
\w 如果文本中包含任何单词字符(从a到Z的字符,从0到9的数字,以及下划线_字符),返回匹配项 "\w"
\W 如果文本中不包含任何单词字符(从a到Z的字符,从0到9的数字,以及下划线_字符),返回匹配项 "\W"
\Z 如果指定的字符串位于文本末尾,则返回匹配项 "Spain\Z"

集合

集合是一对方括号[]中的一组字符,具有特殊的含义:

Set 描述
[arn] 返回匹配指定字符(a、r或n)之一的匹配项
[a-n] 返回匹配任意a和n之间,小写字符的匹配项
[^arn] 返回匹配除a、r和n之外的任何字符的匹配项
[0123] 返回匹配指定数字(0、1、2或3)的匹配项
[0-9] 返回匹配0到9之间任意数字的匹配项
[0-5][0-9] 返回匹配从00到59的任意两位数的匹配项
[a-zA-Z] 返回匹配按字母顺序在a和z之间、小写或大写的任何字符的匹配项
[+] 在集合中,+,*,.,|,(),$,{}没有特殊的含义,所以[+]的意思是: 返回字符串中"+"字符的匹配项

findall()函数

findall()函数返回一个包含所有匹配项的列表。

示例

打印包含所有匹配项的列表:

import re

str = "The rain in Spain"
x = re.findall("ai", str)
print(x)

列表中的匹配项按找到的顺序排序。

如果没有找到匹配项,返回一个空列表:

示例

打印所有匹配项的列表:

import re

str = "The rain in Spain"
x = re.findall("Portugal", str)
print(x)

search() 函数

search() 搜索文本中的匹配项,如果有匹配项,返回匹配对象。

如果有多个匹配项,只返回第一个:

示例

搜索文本中的第一个空白字符:

import re

str = "The rain in Spain"
x = re.search("\s", str) print("第一个空白字符位于:", x.start())

如果没有找到匹配项,则返回None值:

示例

不匹配:

import re

str = "The rain in Spain"
x = re.search("Portugal", str)
print(x)

split() 函数

split()函数使用字符串分割文本,返回文本被分割后的列表:

示例

在每个空白字符处分割文本:

import re

str = "The rain in Spain"
x = re.split("\s", str)
print(x)

可以通过指定maxsplit参数来控制分割次数:

示例

只在第一次匹配时分割字符串:

import re

str = "The rain in Spain"
x = re.split("\s", str, 1)
print(x)

sub() Function

将匹配项替换为指定文本:

示例

用数字9替换每个空白字符:

import re

str = "The rain in Spain"
x = re.sub("\s", "9", str)
print(x)

可以通过count参数来控制替换的数量:

示例

替换前两项:

import re

str = "The rain in Spain"
x = re.sub("\s", "9", str, 2)
print(x)

匹配对象

匹配对象是一个包含搜索和结果信息的对象。

注意: 如果没有匹配,则返回None值,而不是匹配对象。

示例

搜索一下,将返回一个匹配对象:

import re

str = "The rain in Spain"
x = re.search("ai", str)
print(x) #打印对象

匹配对象具有用于检索搜索信息的属性和方法:

  • .span() 返回一个元组,其中包含匹配项的开始和结束位置。
  • .string 返回传递给函数的文本
  • .group() 返回文本中匹配的部分

示例

打印第一个匹配项的位置(开始和结束位置)。

正则表达式查找任何以大写字母“S”开头的单词:

import re

str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.span())

示例

打印传入函数的文本:

import re

str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.string)

示例

打印文本中匹配的部分。

正则表达式查找任何以大写字母“S”开头的单词:

import re

str = "The rain in Spain"
x = re.search(r"\bS\w+", str)
print(x.group())

注意: 如果没有匹配,则返回None值,而不是匹配对象。

Python 正则表达式(RegEx)的更多相关文章

  1. 更强大的python正则表达式模块 -- regex

    python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...

  2. Python 正则表达式入门(初级篇)

    Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...

  3. python正则表达式re

    Python正则表达式: re 正则表达式的元字符有. ^ $ * ? { [ ] | ( ).表示任意字符[]用来匹配一个指定的字符类别,所谓的字符类别就是你想匹配的一个字符集,对于字符集中的字符可 ...

  4. 比较详细Python正则表达式操作指南(re使用)

    比较详细Python正则表达式操作指南(re使用) Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式.Python 1.5之前版本则是通过 regex 模块提供 E ...

  5. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  6. Python 正则表达式-OK

    Python正则表达式入门 一. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分. 正则表达式是用于处理字符串的强大工具, 拥有自己独特的语法以及一个独立的处理引擎, 效率上 ...

  7. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

  8. [转] Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  9. python 正则表达式汇总

    一. 正则表达式基础 1.1.概念介绍 正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥 ...

随机推荐

  1. 越南FCK批量拿站

    关键词:inurl:detail_product.asp?lang= /FCKeditor/_samples/asp/sample01.asp/FCKeditor/_samples/asp/sampl ...

  2. Vue 前后台交互,插件

    目录 Vuex 插件 前端存储数据汇总 前后台交互方式(重点) axios 插件 同源策略-跨域问题 前后台分离项目交互流程 异步请求细节 Element-ui 插件 jQ + Bs插件 Django ...

  3. 简述javascript的解析与执行

    我们知道浏览器中javascript程序的执行是基于变量与函数的.那么浏览器是如何保存数据,又是如何执行的呢?今天我们一起来探究一下! 0.写在前 最新的 ECMAScript 标准定义了 8 种数据 ...

  4. Zabbix在Docker中的应用和监控

    目录 Zabbix在Docker中的应用和监控 一.如何使Zabbix跑在Docker里 1.Docker基础环境配置 2.Docker-compose安装配置 3.启动zabbix server 4 ...

  5. java关于hasNext()

    编写一段程序实现如果输入的一组数中含非整数数字,输出数字相加的和以及"attention"字符,如果全部是数字便输出数字的和. 程序1: package mian; import ...

  6. clientDataSet转换sql

    ReadMe 新版本delphi,可以用string类型,旧版本需要用widestring =========================================== function T ...

  7. 数据归一化Scaler-机器学习算法

    //2019.08.03下午#机器学习算法的数据归一化(feature scaling)1.数据归一化的必要性:对于机器学习算法的基础训练数据,由于数据类型的不同,其单位及其量纲也是不一样的,而也正是 ...

  8. 51nod 1444:破坏道路 广度优先搜索

    1444 破坏道路 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  取消关注 在某一个国家,那儿有n个城市,他们通过 ...

  9. 使用PYaudio录制音频和视频(自己)

    参考:https://blog.csdn.net/zhaoyun_zzz/article/details/84341801 音频录制:简洁版 import pyaudioimport waveimpo ...

  10. 使用 esxcli storage vmfs unmap 命令在精简置备的 LUN 上回收 VMFS 删除的块

    官方原文链接: https://kb.vmware.com/s/article/2057513?lang=zh_CN 本文介绍如何通过运行 esxcli storage vmfs unmap 命令回收 ...