python|正则表达式-3:基本特殊字符含义

简介: python|正则表达式-3:基本特殊字符含义

我们此前已经写过2篇文章解释什么是python正则表达式,以及python re库的讲解,如果还未看过这两篇文章的小伙伴,不妨先看看如下文章:


python | 探寻python正则表达式-1:juejin.cn/post/722125…

python | 正则表达式re库常用方法介绍:juejin.cn/post/722173…

以便做到承上启下,无缝连接。


还是在此声明一点,该片文章基于的python版本为:

image.png


关于特殊字符,我们推荐查看python官方的文档: docs.python.org/zh-cn/3.7/l…

image.png我们今天将要介绍正则表达式的特殊字符,以及含义,和相关的案例。



转义符


在正则表达式中,使用反斜杠``来将特殊字符转义成普通字符,例如文本中有*,我们就想查询字符*,就可以使用*进行转义、还例如特殊字符[]都可以使用如下方式进行转义,这里列举2个例子:


假设有一串电话号码,但是屏蔽了中间4位,为: 180-****-3281,我们需要匹配进行完整字符串匹配(不用正则特殊字符),应当如何来匹配*呢?


如果我们直接写re.findall("180-****-3281",'180-****-3281')则会报错,因为在正则表达式中,*代表前一个字符出现0次或者无数次,所以多个*在一起没有意义,会导致编译正则表达式不过。


如果想将*就当成普通字符进行匹配,可以在此之前使用``来转义一下,例如:

import re
print(re.findall("180-****-3281",'180-****-3281'))

这样就可以将这个完整给匹配出来,运行结果为:

image.png


再来一个例子,假设有一个日志文件logs.txt

image.png

我们想匹配下[err]类型日志出现的整行。这个应该如何匹配呢?

我们可以使用re.match来做匹配开头为[err]的即可,例如:

import re
for line in open('logs.txt'):
    if re.match('[err]',line):
        print(line)

运行后,我们可以看到,可以正常输出记录。

image.png



多个正则表达式


可以使用特殊字符|来将多个正则表达式分开,例如: re1|re2就会匹配re1正则表达式 和 re正则表达式。


例如: 针对一串字符串,我们即想匹配pdudo又想匹配juejin,则我们可以使用pdudo|juejin

import re
print(re.findall("pdudo|juejin","hello juejin , hello pdudo"))

上述代码,执行后,输出结果为:

image.png



任意字符


可以使用特殊字符.来匹配一个任何一个特殊字符,通常和特殊字符*配合使用。

例如使用pd.do即可匹配pdudopdodo等,代码如下:

re.findall("pd.do","pdudo pdodo")



0次或多次前面的出现的字符串或者正则表达式

使用*可以匹配0次或者多次前一个字符串,通常和特殊字符.配合使用。

这个例子放到后面来讲解。



字符串起始和结尾部分

可以使用特殊字符^来匹配字符串起始,使用$来匹配字符串结尾,例如想匹配以p开头的并且以d结尾的字符串,可以这样写:

re.findall("p.*o","pdudo")



来自合集的内容

可以使用[...]来匹配字符集的单一字符,其中...可以是范围,例如:

[0-9]: 将匹配 0-9 中的任何一个值

[abc]: 将匹配abc中的任何一个字符串

[^abc]: 在前面加一个取反符号^,则不匹配范围的字符

这个例子放到后面来讲解。



n次前面出现的字符串或者正则表达式

可以使用{n}来匹配前面出现的n次表达式,例如: a{3}将匹配为aaa

例如想匹配电话号码:

re.findall("1[0-9]{2}-[0-9]{4}-[0-9]{4}","180-2134-1234")

上述,[0-9]代表范围,后面{n}代码前一个字符出现n次。



另存为数组


使用(...)会将匹配到的正则表达式,另存为自组,在爬虫用的比较多,这里举个例子:

import re
print(re.findall("^下载链接为:(.*),请用迅雷下载$","下载链接为:www.juejin.cn/123/456,请用迅雷下载"))

上述会匹配以下载链接为:开头,并且以,请用迅雷下载为结尾的字符串,且将匹配到的信息另存为数组,即(.*)中间的内容。


所以执行的结果为:


image.png



总结


这篇文章,详细介绍了python正则表达式特殊字符的含义,以及其用法。 再结合之前的2篇文章,相信你会对python正则表达式有一个初步的了解。



相关文章
|
3月前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
57 0
|
2月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
71 5
|
2月前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
28 1
|
2月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
4月前
|
Python
python获取字符串()里面的字符
在Python中,如果你想获取字符串中括号(比如圆括号`()`、方括号`[]`或花括号`{}`)内的字符,你可以使用正则表达式(通过`re`模块)或者手动编写代码来遍历字符串并检查字符。 这里,我将给出使用正则表达式的一个例子,因为它提供了一种灵活且强大的方式来匹配复杂的字符串模式。 ### 使用正则表达式 正则表达式允许你指定一个模式,Python的`re`模块可以搜索字符串以查找匹配该模式的所有实例。 #### 示例:获取圆括号`()`内的内容 ```python import re def get_content_in_parentheses(s): # 使用正则表达
128 36
|
2月前
|
人工智能 开发工具 Python
[oeasy]python040_缩进几个字符好_输出所有键盘字符_循环遍历_indent
本文探讨了Python代码中的缩进问题。通过研究`range`函数和`for`循环,发现缩进对于代码块的执行至关重要。如果缩进不正确,程序会抛出`IndentationError`。文章还介绍了Python的PEP8规范,推荐使用4个空格进行缩进,并通过示例展示了如何使用Tab键实现标准缩进。最后,通过修改代码,输出了从0到122的字符及其对应的ASCII码值,但未能找到竖线符号(`|`)。文章在总结中提到,下次将继续探讨竖线符号的位置。
26 0
|
3月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
36 1
|
3月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
24 3
|
3月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
36 7
|
4月前
|
索引 Python
python之判断字符里面有没有|8
python之判断字符里面有没有|8
下一篇
开通oss服务