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
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439
  • 正则表达式
    +关注

    关注

    0

    文章

    26

    浏览量

    3476
收藏 人收藏

    评论

    相关推荐

    Verilog表达式的位宽确定规则

    很多时候,Verilog中表达式的位宽都是被隐式确定的,即使你自己设计了位宽,它也是根据规则先确定位宽后,再扩展到你的设计位宽,这常常会导致结果产生意想不到的错误。
    的头像 发表于 10-22 15:41 237次阅读
    Verilog<b class='flag-5'>表达式</b>的位宽确定规则

    nginx中的正则表达式和location路径匹配指南

    前言,我这里验证的nginx-v1.23.2单机环境下的nginx中的正则表达式、location路径匹配规则和优先级。
    的头像 发表于 09-29 16:02 455次阅读
    nginx中的<b class='flag-5'>正则表达式</b>和location路径匹配指南

    求助,以下恒流源电路Io的计算表达式怎么计算?

    这个恒流源电路Io的计算表达式怎么计算,求给出详细计算过程
    发表于 08-22 08:16

    鸿蒙原生应用元服务开发-仓颉基本概念表达式(二)

    三、do-while 表达式 do-while 表达式的基本形式为: do { 循环体 } while (条件) 其中“条件”是布尔类型表达式,“循环体”是一个代码块。do-while 表达式
    发表于 08-09 14:26

    鸿蒙原生应用元服务开发-仓颉基本概念表达式(一)

    在一些传统编程语言中,一个表达式由一个或多个操作数(operand)通过零个或多个操作符(operator)组合而成,表达式总是隐含着一个计算过程,因此每个表达式都会有一个计算结果,对于只有操作数而
    发表于 08-08 10:27

    求助,有关表达式选项卡(ADS)的问题求解

    你好。 我看不到表达式选项卡中的某些变量值。 数组的大小显然是 256,但我最多只能看到 100。 请问问题出在哪里? 谢谢。
    发表于 06-03 06:23

    mapgis属性筛选表达式

    篇文章中,我们将详细讨论MapGIS的属性筛选表达式,包括语法、操作符和函数等。 属性筛选表达式是一种在MapGIS中用于指定要素选择条件的代码。它由一组操作符、函数和属性字段组成,用于描述要筛选的要素的特征。在MapGIS中,属性筛选
    的头像 发表于 02-25 10:58 1464次阅读

    西门子博途的算术表达式

    算术表达式既可以是一个数字值,也可以是由带有算术运算符的两个值或表达式组合而成。 算术运算符可以处理当前 CPU 所支持的各种数据类型。如果在该运算中有 2 个操作数,那么可根据以下条件来确定结果的数据类型。
    的头像 发表于 01-24 11:36 940次阅读

    你还不会gvim正则表达式?一文搞懂!

    gvim正则表达式常在命令行模式下使用,一般用于文本文件字符串的替换、删除等操作。
    的头像 发表于 01-19 16:47 1088次阅读

    更快的tsv解析代码分享

    使用正则解析的正则表达式很简单, 这里直接给代码, 为了避免重复编译正则表达式和重新分配内存报错结果列表, 这里将她们作为参数传给解析函数.
    的头像 发表于 12-29 09:45 394次阅读
    更快的tsv解析代码分享

    GVIM正则表达式介绍和使用示例

    的Ken Thompson借用这个概念并将它应用到了文本编辑器中。后面正则表达式的说法进入到了大家常用的vi、vim、gvim当中。
    的头像 发表于 12-18 15:09 1162次阅读
    GVIM<b class='flag-5'>正则表达式</b>介绍和使用示例

    一文详解Java表达式引擎选型

    AviatorScript 是一门高性能、轻量级寄宿于 JVM 之上的脚本语言。AviatorScript 可将表达式编译成字节码。它原来的定位一直只是一个表达式引擎,不支持 if/else 条件
    的头像 发表于 12-06 10:57 1808次阅读
    一文详解Java<b class='flag-5'>表达式</b>引擎选型

    如何从一个简单的数学表达式创建一个Saber模型?

    如何从一个简单的数学表达式创建一个Saber模型,将你的输出描述为输入的函数?例如 out=a*in*in+b (其中 a 和 b 是常数)。
    的头像 发表于 12-05 13:42 685次阅读
    如何从一个简单的数学<b class='flag-5'>表达式</b>创建一个Saber模型?

    SIMATIC S7-1500 PLC S7-SCL表达式详解

    表达式为了计算一个终值所用的公式,它由地址(变量)和运算符组成。表达式的规则如下。
    的头像 发表于 11-28 09:36 1050次阅读
    SIMATIC S7-1500 PLC S7-SCL<b class='flag-5'>表达式</b>详解

    linux正则表达式匹配字符串

    在Linux操作系统中,正则表达式是一种强大的模式匹配工具,它可以用于在文本中查找、替换和筛选特定的字符串。准确掌握正则表达式的语法和常见应用,对于Linux系统的管理员和开发人员来说
    的头像 发表于 11-23 10:26 693次阅读