Python语法学习之正则表达式的使用详解
作者:渴望力量的哈士奇 发布时间:2023-02-11 15:39:26
标签:Python,正则表达式
要想成功的进行字符串的匹配需要使用到正则表达式模块,正则表达式匹配规则以及需要被匹配的字符串。在这三个条件中,模块与字符串都是准备好的,只有匹配规则异常的灵活,而今天这个章节就是认识一下正则表达式中的特殊字符,通过这些字符就可以针对我们想要的数据进行匹配。
正则表达式中的特殊字符
特殊字符 | 描述 |
---|---|
\d | 匹配任何十进制的数字,与[0-9]一致 |
\D | 匹配任意非数字 |
\w | 匹配任何字母数字下划线及unicode字符集 |
\W | 匹配非字母数字的数据以及下划线 |
\s | 匹配任何空格字符,与 [\n \t \r \v \f] 相同 |
\S | 匹配任意非空字符 |
\A | 匹配字符串的起始 |
\Z | 匹配字符串的结束 |
. | 匹配任何字符(除了 \n 之外);也叫做通配符 |
正则表达式的使用
接下来看一个小案例,帮助我们了解这些 特殊字符的使用方法 。
import re
test_data = "My name is Neo, I'm 30 years old."# 将一串字符串赋值给变量 test_data
result_int = re.findall('\d', test_data)# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(只匹配数字)
result_Space = re.findall('\s', test_data)# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(只匹配空格)
result_str = re.findall('\w', test_data)# 使用 findall 函数并传入 '\d' 的匹配规则匹配 test_data(匹配字符串)
result_str_start = re.findall('\AMy', test_data)# 匹配开头为 My 的字符串
result_str_start_null = re.findall('\AMya', test_data)# 匹配开头为 Mya 的字符串(不存在 mya ,返回空列表)
result_str_end = re.findall('old.\Z', test_data)# 匹配结尾为 old. 的字符串
result_str_end_null = re.findall('zold.\Z', test_data)# 匹配结尾为 zold. 的字符串(不存在 zold ,返回空列表)
result_all = re.findall('.', test_data)# 匹配除了 \n 之外的所有字符(包含空格)
print(result_int)
print(result_Space)
print(result_str)# 从结果上来看 \w 要比 \d 更高级一些,不仅匹配了 str,也匹配了 int(实际上这里的int依然是字符串)
print(result_str_start)
print(result_str_start_null)
print(result_str_end)
print(result_str_end_null)
# >>> 执行结果如下
# >>> ['3', '0']
# >>> [' ', ' ', ' ', ' ', ' ', ' ', ' ']
# >>> ['M', 'y', 'n', 'a', 'm', 'e', 'i', 's', 'N', 'e', 'o', 'I', 'm', '3', '0', 'y', 'e', 'a', 'r', 's', 'o', 'l', 'd']
# >>> ['My']
# >>> []
# >>> ['old.']
# >>> []
# >>> ['M', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', ' ', 'N', 'e', 'o', ',', ' ', 'I', "'", 'm', ' ', '3', '0', ' ', 'y', 'e', 'a', 'r', 's', ' ', 'o', 'l', 'd', '.']
正则小案例 - 1
1、定义一个函数,判断传入参数是否包含有数字。
2、定义一个函数,判断传入参数是否含有数字,如果有则移除。
import re
def have_number(data): # 定义一个判断是否存在数字的函数
result = re.findall('\d', data) # 利用 re 模块的 findall 函数的 \d 规则判断传入的 data 是否存在数字
print(result)
for i in result: # 利用 for 循环 判断 result 的结果,如果存在返回 True ;反之返回 False
return True
return False
def remove_number(data):
result = re.findall('\D', data)
print(result)
return ' '.join(result)
if __name__ == '__main__':
test_data_1 = "My name is Neo, I'm 30 year's old."
test_data_2 = "it's a beautiful day to be with you"
result = have_number(test_data_1)
print(result)
result = remove_number(test_data_1)
print(result)
result = re.findall('\W', test_data_2) # 匹配非字母数字的数据以及下划线
print(result)
运行结果如下图:
正则小案例 - 2
1、定义一个 startwith 函数 判断传入数据是否是字符串的开头
2、定义一个 endwith 函数 判断传入数据是否是字符串的结尾
import re
def startswith(sub, data):
_sub = '\A{}'.format(sub)
result = re.findall(_sub, data)
for i in result:
return True
return False
def endswith(sub, data):
_sub = '{}\Z'.format(sub)
result = re.findall(_sub, data)
if len(result) == 0:
return False
else:
return True
if __name__ == '__main__':
result = startswith('My', test_data_1)
print(result)
result = endswith('old.', test_data_2)
print(result)
执行结果如下:
正则小案例 - 3
1、python 内置函数 len() 是可以获取到字符串的长度的,但是当字符串中存在着空格符号的时候也会计算在长度内。
2、利用正则的知识,定义一个计算字符串真实长度的函数
import re
def real_len(data):
result = re.findall('\S', data)
return len(result)
if __name__ == '__main__':
test_data_1 = "My name is Neo, I'm 30 year's old."
test_data_2 = "it's a beautiful day to be with you"
print(len(test_data_2))
result = real_len(test_data_2)
print(result)
运行结果如下:
来源:https://blog.csdn.net/weixin_42250835/article/details/124204174


猜你喜欢
- global 属性返回 Boolean 值,指出正则表达式使用的global 标志 (g) 的状态。默认值为 false。只读。rgExp.
- 这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结:先查阅数据库:现在编写源码进行增删改查操作,源码
- MySQL安装文件已被广泛应用但是也在不断的更新,这里介绍MySQL安装文件设置使用,帮助大家安装更新MySQL安装文件系统。Fedora5
- 个人总结了在开发css框架中的一点经验,献丑了。希望大家的讨论能使我们共同进步。:)1、css框架中国的互联网行业已经发展了10年,浏览器也
- 1、Case 子查询连接查询select * from score create database demo use demo create
- 我就废话不多说了,直接上代码吧!import matplotlibmatplotlib.use('Agg')import o
- 当在python中遍历一个序列时,我们通常采用如下的方法: for item in sequence: proce
- 首先我的环境已配置好:GO的目录结构是:add.gopackage calc//函数名必须大写首字母,不然外部包找不到func Add(a
- 本文实例讲述了python使用 __init__初始化操作。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#
- 对于经常使用MYSQL的人来说,phpmyadmin是一个必备的工具。这个工具非常强大,几乎可以完成所有的数据库操作,但是它也有一个弱点,对
- 拆包是指将一个结构中的数据拆分为多个单独变量中。以元组为例:>>> a = ('windows', 10,
- 如果您目前拥有一个冷备份,但是缺少了其中的一个数据文件,但你目前存在所有的归档,如果您要恢复数据文件,可以参考以下的示例:[oracle@j
- 本文实例讲述了JS实现简易图片轮播效果的方法。分享给大家供大家参考。具体如下:这里使用JS制作简易图片轮播效果:制作比较粗糙,使用的图片是w
- 项目地址:https://github.com/MrWayneLee/weather-demo代码部分下载生成文件功能# 下载并生成文件de
- 通过exec可以执行动态Python代码,类似Javascript的eval功能;而Python中的eval函数可以计算Python表达式,
- 前言列表(list)同字符串一样都是有序的,因为他们都可以通过切片和索引进行数据访问,且列表是可变的。创建列表的几种方法第一种name_li
- 如下所示:hist = model.fit(x,y, epochs=epoch_num, batch_size=32,callbacks=e
- 用面向对象的思维解决问题的重点当遇到一个需求的时候不用自己去实现,如果自己一步步实现那就是面向过程;应该找一个专门做这个事的人来做。面向对象
- 前言什么是命令行程序呢?像我们常见的webpack,vue-cli都属于命令行程序。本文将带你从0开始用node写一个自己的命令行程序,并发
- 首先是最常规的方法: <p>test</p> <script> function test(){ ale