实验7:正则表达式

Python实验 飞快学 17浏览

一、实验目的

了解正则表达式的作用;了解Python中常见的正则函数;了解常见的正则模式。

二、实验内容

正则表达式:正则表达式是由美国数学家 Stephen Kleene 于 1956 年提出, 主要用于描述正则集代数。它是一串由特定意义的字符组成的字符串, 表示某种匹配的规则。正则表达式能够应用在多种操作系统中, 几乎所有的程序设计语言都支持。正则表达式最基本的三种功能是搜索、分组和替换。

常用的正则函数有4个:findall、search、sub 和 split。

三、实验步骤

【小任务】找出字符串中所有的`Python`,注意大小写必须完全一致(`re.findall`)。

import re
 
line = "JAVA Python PHP Python SQL python Python PYTHON"
pattern = r'Python'
r = re.findall(pattern, line)
print(r)
# ['Python', 'Python', 'Python']

说明:’Python’是一个正则表达式。因为本身是纯文本,所以看起来可能不像是一个正则表达式,但它的确是。正则表达式可以包含纯文本(甚至可以只包含纯文本)。当然,像这样使用正则表达式是一种浪费,但我们可以把这作为学习正则表达式的起点。

【小任务】检测特定模式是否存在于字符串(`re.search`)。

import re
 
line = "JAVA PHP Python C++  Perl     SQL"
pattern = r'[Pp]ython'
if re.search(pattern, line):
	print("exist")
else:
	print("don't exist")
# exist

在Python中,`re.search`扫描整个字符串查找匹配。Python还提供了函数 `re.match `,该函数尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回none。`re.match` 可以认为是 `re.search`的一个特例,使用价值不大,完全可以通过在pattern中指定匹配行首(使用^)来替代。

【小任务】把字符串中的空格替换为逗号( `re.sub`)

import re
 
line = "JAVA PHP Python C++  Perl     SQL"
pattern = r'\s+'
new = ','
r = re.sub(pattern, new ,line)
print(r)
# JAVA,PHP,Python,C++,Perl,SQL

说明:空白包含空格、Tab、回车、换行等符号,用`\s`表示,`+`表示至少出现一次。`re.sub`返回的是替换后的字符串。

【小任务】根据空白来切分字符串(`re.split` )

import re
 
line = "JAVA PHP Python C++  Perl     SQL"
pattern = r'\s+'
r = re.split(pattern, line)
print(r)
# ['JAVA', 'PHP', 'Python', 'C++', 'Perl', 'SQL']

四、实验小结

不少于50字。