Python 正则表达式(RegEx) - 奇客谷教程 qikegu.com

Python 正则表达式(RegEx)


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

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

正则表达式(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值,而不是匹配对象。


Doc navigation

← Python JSON

Python PIP包管理器 →

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值