前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 中的正则表达式

Python 中的正则表达式

作者头像
测试小兵
发布2019-11-19 23:03:31
1.1K0
发布2019-11-19 23:03:31
举报
文章被收录于专栏:猪圈子猪圈子

01

众所周知,正则表达式是字符串处理的强大的工具。Python中则提供了强大的正则表达式处理模块,即 re 模块, 为Python的内置模块。本文介绍一下该模块常用的函数及其具体应用。

  • compile:对正则表达式的pattern进行编译,并返回一个 Pattern 对象,该对象可以执行下面的操作函数,当然也可以不进行编译直接允许下面的操作函数。
  • match:即从字符串的起始位置对字符串进行匹配,一定要注意是从字符串的开头匹配,如果匹配成功,则返回匹配对象,否则返回None。
  • search:在字符串中搜索模式串第一次出现的位置,如果匹配成功,则返回匹配对象,否则返回None。
  • findall:在字符串中搜索模式串所有的出现,返回一个匹配列表
  • split:根据模式串将字符串进行分割,返回一个分割之后的列表
  • sub:字符串中所有匹配模式串的地方进行替换,返回替换后的字符串

下面通过示例来进行学习。

1、compile

代码语言:javascript
复制
import re

pattern = re.compile('Hello')

# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
mc = pattern.match('Hello Python!')

if mc:
    # 使用mc获得分组信息
    print mc.group()

匹配完成后,需要通过 group() 或者 groups() 来返回结果,通常 group() 返回全部匹配的对象,groups() 返回元组。上述示例中可以正常匹配到,所以运行的结果是: Hello。

2、match

代码语言:javascript
复制
# 匹配文本,模式串为Python,字符串为:I love Python, 无法匹配时将返回None
mc = re.match("Python","I love Python")

if mc is not None:
    # 使用mc获得分组信息
    print mc.group()

由于 match 是从字符串开头来进行匹配,所以匹配的结果 mc 是None,故不会有任何输出。

3、search

代码语言:javascript
复制
# 搜索文本,模式串为Python,字符串为:I love Python, 无法匹配时将返回None
mc = re.search("Python","I love Python")

if mc is not None:
    # 使用mc获得分组信息
    print mc.group()

而搜索则是可以的,打印的结果为 Python。

4、findall

代码语言:javascript
复制
# 查找Python在字符串中的出现情况,总是返回一个列表
fstr = re.findall("Python","I love Python, Python is a terrific language!")

print fstr

findall 和 match 及 search 有所不同,返回的结果总是一个列表,如果匹配不到的话,则是返回一个空列表。

5、split

代码语言:javascript
复制
# 按照模式串进行分割,其中模式串的意思是1个或者多个数字
spstr = re.split('\d+', 'I am 10 years old, I love Python 100 years!')

print spstr

这是按照数字来进行分割,字符串中有两个数字,分别是10和100,这两个数字将字符串分为三部分,所以运行的结果如下:

['I am ', ' years old, I love Python ', ' years!']。

6、sub

代码语言:javascript
复制
# 按照模式串X进行替换,替换为新的字符串Python
substr = re.sub('X', 'Python', 'Hello, X! I love X 100 years!')

print substr

sub 函数完成了替换的功能,在字符串中匹配模式串,并将匹配到的部分替换成新的字符串。所以,上述代码的输出结果为:

Hello, Python! I love Python 100 years!

通过上述几个例子,相信你已经掌握了正则表达式模块 re 的基本用法。那么更复杂的正则表达式呢? 快快Coding练习吧!

本文来自公众号:python那些事

文部分来源网络,如有侵权请第一时间联系删除。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python测试社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档