众所周知,正则表达式是字符串处理的强大的工具。Python中则提供了强大的正则表达式处理模块,即 re 模块, 为Python的内置模块。本文介绍一下该模块常用的函数及其具体应用。
下面通过示例来进行学习。
1、compile
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
# 匹配文本,模式串为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
# 搜索文本,模式串为Python,字符串为:I love Python, 无法匹配时将返回None
mc = re.search("Python","I love Python")
if mc is not None:
# 使用mc获得分组信息
print mc.group()
而搜索则是可以的,打印的结果为 Python。
4、findall
# 查找Python在字符串中的出现情况,总是返回一个列表
fstr = re.findall("Python","I love Python, Python is a terrific language!")
print fstr
findall 和 match 及 search 有所不同,返回的结果总是一个列表,如果匹配不到的话,则是返回一个空列表。
5、split
# 按照模式串进行分割,其中模式串的意思是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
# 按照模式串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那些事
文部分来源网络,如有侵权请第一时间联系删除。