文档详情

Python笔记五之正则表达式.docx

发布:2025-05-15约1.15万字共21页下载文档
文本预览下载声明

Python笔记五之正则表达式

这里从re.findall开始介绍,findall方法表示的是找到目标字符串里符合指定模式的全部数据。

比如我们有一个字符串abcdefg,想要从其中找到de,就可以如下操作:

str_1=abcdefg

target_str=de

print(re.findall(target_str,str_1))

返回的就是一个列表,列表元素是我们的目标字符串de:

[de]

我们的target_str就是一个匹配模式,这里是一个纯字符串,我们可以将其替换成其他的模式字符串。

接下来我们将分类介绍正则表达式语法。

2、表达式语法

正则表达式有很多种,比如表示匹配数量的+,*,,还有表示匹配字符串内容的\s,\w等。

下面将从这些类别分别开始介绍:匹配字符串类型、匹配字符串出现位置、匹配字符串数量、匹配字符串集合等

1.匹配字符串类型

1)\b-匹配空字符串,但只在单词开始或结尾

\b可以匹配空字符串,但是只在字符串开始或者结尾的位置,这里的空字符串涵盖了标签符号,比如,.,。?等,也包括换行制表符\n\t等,也包含,可以理解为字符串的边界部分。

所以\b的作用其实就可用于匹配特定字符串的前缀或者后缀,这里的前缀和后缀并不仅仅是指整个字符串的前缀和后缀,也包括字符串内部被分割的前缀和后缀。

比如对于下面这个字符串:

ihaveaapple

我们想找到是否有ha开头的单词,可以如此操作:

str_1=ihaveaapple

target_pattern=r\bha

print(re.findall(target_pattern,str_1))

字符串如果是以下几种情况,也可以匹配上:

str_1=i,haveaapple

str_1=i\thaveaapple

str_1=iha

我们还可以使用\b来匹配特定的单词,在英文中,单词的出现是前后都有空格或者标点符号的,那么我们就可以前后都加上\b来限定匹配是否出现过此单词:

str_1=ihaveanapple

str_1=ihaveanapple,

str_1=ihaveanapplehowareyou

target_pattern=r\bapple\b

print(re.findall(target_pattern,str_1))

2)\B-匹配空字符串,不能在开头或结尾

\B是\b的取非操作,含义是匹配空字符串,但是不能出现在开头或者结尾,也就是说\B所在的位置必须有1至多个非空字符串来替代:

str_1=ihaveanapple

target_pattern=rapp\B

print(re.findall(target_pattern,str_1))

3)\d-匹配十进制数字

\d用来匹配十进制数字,也就是0-9这些,比如下面的操作:

str_1=asdas98123asa978d

target_pattern=r\d

print(re.findall(target_pattern,str_1))

#[9,8,1,2,3,9,7,8]

可以看到返回的结果是分隔开的数字,如果想要他们在一起返回,我们可以使用\d+来操作,+表示的匹配1到n次,这个后面再介绍。

4)\D-匹配非十进制字符

\D表示的是\d相反的操作,非十进制字符,可以使用上面的示例进行测试。

5)\s-匹配空白字符

\s匹配的空白字符不包括标点符号,常见的有换行符,制表符,回车符等转义字符,\n\t\r\f等

str_1=asdas9812\v3a\rs,.\ta9\n78\fd

target_pattern=r\s

print(re.findall(target_pattern,str_1))

6)\S-匹配非空白字符

\S是\s取非操作,除了上面的换行符、制表符等字符外,包括标点符号皆可被匹配上

7)\w-匹配字符

\w不匹配换行符、制表符等转义字符,不匹配中英文常见标点符号,比如,.;等,但是可以匹配中英文字符、数字和下划线,比如下面的示例:

str_1=asd_a你好,s9。8?12\v3a\rs,.\ta9\n78\fd

target_pattern

显示全部
相似文档