0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初识 Python 正则表达式

python爬虫知识分享 来源:python爬虫知识分享 作者:python爬虫知识分享 2022-03-17 16:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。

Python 自 1.5 版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

下面通过实例,一步一步来初步认识正则表达式。

比如在一段字符串中寻找是否含有某个字符或某些字符,通常我们使用内置函数来实现,如下:

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 判断是否有 “两点水” 这个字符串,使用 PY 自带函数

print('是否含有“两点水”这个字符串:{0}'.format(a.index('两点水') > -1))
print('是否含有“两点水”这个字符串:{0}'.format('两点水' in a))

输出的结果如下:

是否含有“两点水”这个字符串:True
是否含有“两点水”这个字符串:True

那么,如果使用正则表达式呢?

刚刚提到过,Python 给我们提供了 re 模块来实现正则表达式的所有功能,那么我们先使用其中的一个函数:

re.findall(pattern, string[, flags])

该函数实现了在字符串中找到正则表达式所匹配的所有子串,并组成一个列表返回,具体操作如下:

import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 正则表达式

findall = re.findall('两点水', a)
print(findall)

if len(findall) > 0:
    print('a 含有“两点水”这个字符串')
else:
    print('a 不含有“两点水”这个字符串')

输出的结果:

['两点水']
a 含有“两点水”这个字符串

从输出结果可以看到,可以实现和内置函数一样的功能,可是在这里也要强调一点,上面这个例子只是方便我们理解正则表达式,这个正则表达式的写法是毫无意义的。为什么这样说呢?

因为用 Python 自带函数就能解决的问题,我们就没必要使用正则表达式了,这样做多此一举。而且上面例子中的正则表达式设置成为了一个常量,并不是一个正则表达式的规则,正则表达式的灵魂在于规则,所以这样做意义不大。

那么正则表达式的规则怎么写呢?先不急,我们一步一步来,先来一个简单的,找出字符串中的所有小写字母。首先我们在 findall 函数中第一个参数写正则表达式的规则,其中 [a-z] 就是匹配任何小写字母,第二个参数只要填写要匹配的字符串就行了。具体如下:

import re

# 设定一个常量
a = '两点水|twowater|liangdianshui|草根程序员|ReadingWithU'

# 选择 a 里面的所有小写英文字母

re_findall = re.findall('[a-z]', a)

print(re_findall)

输出的结果:

['t', 'w', 'o', 'w', 'a', 't', 'e', 'r', 'l', 'i', 'a', 'n', 'g', 'd', 'i', 'a', 'n', 's', 'h', 'u', 'i', 'e', 'a', 'd', 'i', 'n', 'g', 'i', 't', 'h']

这样我们就拿到了字符串中的所有小写字母了。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    57

    文章

    4857

    浏览量

    89576
  • 正则表达式
    +关注

    关注

    0

    文章

    28

    浏览量

    3815
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    第4章 C语言基础以及流水灯的实现(4.5 4.6)

    (表达式)        {            循环体语句;        } 在C语言里,通常“表达式”符合条件叫做真,不符合条件,叫做假。比如前边i while(表达式)这个括号里的
    的头像 发表于 11-06 11:21 117次阅读

    inline ASM(内联汇编)的细节分享

    内联汇编,否则,仍然是带有C++表达式的内联江编,此时\"instructionlist\"中的寄存器的写法需要遵守相关的规定: 寄存器前必须使用两个百分号(%%),而不是像
    发表于 10-31 09:11

    I1电流计算对不对?怎么推导不出来I1的表达式是图中那样

    I1电流计算对不对?怎么推导不出来I1的表达式是图中那样
    发表于 09-28 18:01

    labview如何使用VISA串口资源查找的正则表达式提取串口的资源名称?

    如图,如何利用VISA资源查找的正则表达式从很多串口当中提取想要的目标串口(Quectel USB AT Port这个串口)?
    发表于 07-07 17:20

    基础篇3:掌握Python中的条件语句与循环

    不同的条件执行不同的代码块。Python中的条件语句主要使用if、elif(else if的缩写)和else关键字。 if语句 最简单的条件语句是if语句,它的工作方式如下: 复制代码 if 条件表达式
    发表于 07-03 16:13

    Cubeide1.18.1在线调试改变\"现场表达式\"中的值提示找不到地址,为什么?

    Cubeide1.18.1在线调试时,在\"现场表达式\"中添加全局变量,然后改变其数值,Console窗口提示: Failed to read all registers
    发表于 06-12 06:50

    《ESP32S3 Arduino开发指南》第三章 C/C++语言基础

    基础,由于篇幅有限,在此仅对C/C++语言基础进行简单介绍。本章将分为如下9个小节:3.1 数据类型3.2 运算符3.3 表达式3.4 数组3.5 字符串3.6 注释3.7 顺序结构3.8 选择结构
    发表于 06-10 09:20

    Cubeide1.18.1在线调试改变\"现场表达式\"中的值提示找不到地址是怎么回事?

    Cubeide1.18.1在线调试时,在\"现场表达式\"中添加全局变量,然后改变其数值,Console窗口提示: Failed to read all registers
    发表于 06-10 08:26

    干货分享 | 零基础上手!TSMaster图形信号表达式实操指南

    TSMaster软件支持在图形里面的信号表达式功能,主要用于多信号表达式运算和显示的场景。本文将以A2L中的标定变量为例,介绍如何使用图形中的信号表达式功能进行多信号的后处理运算和显示。本文关键词
    的头像 发表于 06-06 20:03 670次阅读
    干货分享 | 零基础上手!TSMaster图形信号<b class='flag-5'>表达式</b>实操指南

    Cubeide1.18.1在线调试改变\"现场表达式\"中的值提示找不到地址,怎么解决?

    Cubeide1.18.1在线调试时,在\"现场表达式\"中添加全局变量,然后改变其数值,Console窗口提示: Failed to read all registers
    发表于 06-06 08:27

    Cubeide1.18.1在线调试改变\"现场表达式\"中的值提示找不到地址怎么解决?

    Cubeide1.18.1在线调试时,在\"现场表达式\"中添加全局变量,然后改变其数值,Console窗口提示: Failed to read all registers
    发表于 04-27 06:18

    Linux中文本处理命令的用法

    Linux 三剑客是(grep,sed,awk)三者的简称,熟练使用这三个工具可以提升运维效率。Linux 三剑客以正则表达式作为基础,而在Linux系统中,支持两种正则表达式,分别为“标准正则表达式”和“扩展
    的头像 发表于 04-15 10:22 555次阅读
    Linux中文本处理命令的用法

    HarmonyOS NEXT 原生应用/元服务-ArkTS代码调试Evaluate and log

    开发者可以通过 Evaluate and log 能力在代码执行到断点行时打印开发者指定的表达式。 操作步骤 在需要打印表达式结果的地方设置断点。 右键断点,然后点击More按钮。 勾选
    发表于 03-14 16:49

    利用栈结构实现四则运算的巧妙方法

    上个视频写了个简易计算器,算个简单的加减乘除还行,但是如果来个混合运算,或者加个括号,这几行代码就差的太多了。 处理这种混合运算,不得不提到数据结构中的栈。 我们平时写的这种表达式,叫做中缀表达式
    的头像 发表于 02-07 11:06 972次阅读

    Linux grep命令详解

    Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。
    的头像 发表于 12-25 09:39 1786次阅读