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正则表达式有一个初步的了解。



相关文章
|
2月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`<a>`标签的`href`属性。
31 0
|
12天前
|
Python
python获取字符串()里面的字符
在Python中,如果你想获取字符串中括号(比如圆括号`()`、方括号`[]`或花括号`{}`)内的字符,你可以使用正则表达式(通过`re`模块)或者手动编写代码来遍历字符串并检查字符。 这里,我将给出使用正则表达式的一个例子,因为它提供了一种灵活且强大的方式来匹配复杂的字符串模式。 ### 使用正则表达式 正则表达式允许你指定一个模式,Python的`re`模块可以搜索字符串以查找匹配该模式的所有实例。 #### 示例:获取圆括号`()`内的内容 ```python import re def get_content_in_parentheses(s): # 使用正则表达
64 36
|
9天前
|
索引 Python
python之判断字符里面有没有|8
python之判断字符里面有没有|8
|
9天前
|
Python
Python ASCII码与字符相互转换
Python ASCII码与字符相互转换
|
12天前
|
Python
[oeasy]python035_根据序号得到字符_chr函数_字符_character_
本文介绍了Python中的`ord()`和`chr()`函数。`ord()`函数通过字符找到对应的序号,而`chr()`函数则根据序号找到对应的字符。两者互为逆运算,可以相互转换。文章还探讨了单双引号在字符串中的作用,并解释了中文字符和emoji也有对应的序号。最后总结了`ord()`和`chr()`函数的特点,并提供了学习资源链接。
17 4
|
6天前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
|
7天前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
11 0
|
8天前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
|
10天前
|
存储 数据处理 Python
Python中利用正则表达式进行文本处理
【9月更文挑战第24天】本文通过深入浅出的方式,介绍如何在Python中使用正则表达式进行文本处理。我们将从基础语法开始,逐步深入到复杂匹配模式的构建,最后通过实际案例展示正则表达式在文本分析中的高效应用。文章旨在帮助读者掌握正则表达式的使用技巧,提高数据处理效率。
|
2月前
|
安全 数据安全/隐私保护 Python
python中的正则表达式
python中的正则表达式
下一篇
无影云桌面