Python中正则表达式简介

目录

一、什么是正则表达式

二、正则表达式的基础知识

1. 原子

     1)普通字符作为原子

   2)非打印字符作为原子

    3) 通用字符作为原子

    4) 原子表

2. 元字符

    1)任意匹配元字符

    2)边界限制元字符

    3)限定符

    4)模式选择符

    5)模式单元符

3. 模式修正

4. 懒惰模式和贪婪模式

三、正则表达式常见的函数

1. re.match()

2. re.search()

3. 全局匹配函数

4. re.sub()


我们在进行字符串处理的时候,希望按自定义的规则进行处理,我们将这些规则称为模式。我们使用正则表达式来表示这些规则。

一、什么是正则表达式

正则表达式就是表述字符排列的一套规则,它的功能非常强大,在实际项目中,但主要是用来处理某种特定格式的信息。

在python中,我们主要使用re模块来实现python的正则表达式功能。

二、正则表达式的基础知识

本节主要讲述正则表示如何去写,我们将分别从原子、元字符、模式修改、贪婪模式和懒惰模式等方面进行介绍。关于正则表达式的使用则在下一小节中详细介绍。

1. 原子

原子是正则表达式中的基本组成单元,每一个正则表达式中至少包含一个原子,常见的原子种类有以下几种:

  • 普通字符作为原子。
  • 非打印字符作为原子。
  • 通用字符作为原子。
  • 原子表。

接下来我们分别对这几类进行详细介绍。

     1)普通字符作为原子

普通字符主要指得是字母、数据、下划线。

我们可以使用普通字符组成的正则表达式去查找相应的字符。例如我们的正则表达式为”python”,然后去字符串string中去寻找是否包含符合正则表达式的字符串(“python“):

import re
pattern = "assd"
string = "C:\\Users\\root\\AppData\\Local\\Programs\\Python\\Python37-32" \
         "\\python.exe D:\\pycharm\\workspace\\spiderAnalysis\\AI_pie\\main.py"

result = re.search(pattern, string)
print(result)


<re.Match object; span=(56, 62), match='python'>
or
None

   2)非打印字符作为原子

非打印字符主要指的是字符串中的控制字符,例如换行符,空格,tab等。

表2.1列出了几个常见的非打印字符及其含义

表2.1  非打印字符表

序号

符号

含义

1

\n

用于匹配一个换行符

2

\t

用于匹配一个制表符

3

 

 

        Pycharm中,如果想通过回车实现换行的话,实际在字符串中是没有换行符”\n”的,因为它是通过拼接实现的,自动把换行符给去掉了。

pattern = '\n'
string = "C:\\Users\\root\\AppData\\Local\nPrograms\\Python\\Python37-32" \
         "\\python.exe D:\\pycharm\\workspace\\spiderAnalysis\\AI_pie\\main.py"
result = re.search(pattern, string)
#print(string)
#print(result)

'''
C:\\Users\root\AppData\Local
Programs\Python\Python37-32\python.exe D:\pycharm\workspace\spiderAnalysis\AI_pie\main.py
<re.Match object; span=(27, 28), match='\n'>
'''

    3) 通用字符作为原子

接下来介绍通用字符。

所谓通用字符指的是,一个原子可以匹配一类字符。

这在实际项目中非常有用。常见的通用字符及其含义如下表:            

表2.2   常见的通用字符及其含义

序号

符号

含义

1

\w

匹配任意一个字母、数字、下划线

2

\W

匹配除了字符数字下划线的其他一个字符

3

\d

匹配一个十进制

Python正则表达式是一种强大的工具,用于在字符串进行模式匹配和搜索。Python提供了re模块来支持正则表达式操作。 以下是Python正则表达式的一些常用功能和用法: 1. 匹配字符串:使用re.match()函数可以从字符串的起始位置开始匹配一个模式。如果匹配成功,返回一个匹配对象;否则返回None。 2. 搜索字符串:使用re.search()函数可以在整个字符串搜索匹配一个模式。如果匹配成功,返回一个匹配对象;否则返回None。 3. 查找所有匹配:使用re.findall()函数可以查找字符串所有匹配一个模式的子串,并返回一个列表。 4. 替换字符串:使用re.sub()函数可以将字符串匹配一个模式的子串替换为指定的字符串。 5. 切分字符串:使用re.split()函数可以根据一个模式将字符串切分成多个子串,并返回一个列表。 6. 匹配对象的属性和方法:匹配对象具有一些属性和方法,如group()、start()、end()等,可以获取匹配到的子串、匹配子串的起始位置和结束位置等信息。 正则表达式的语法非常灵活,可以用于匹配各种复杂的模式。以下是一些常用的正则表达式元字符: - . :匹配任意字符(除了换行符) - ^ :匹配字符串的起始位置 - $ :匹配字符串的结束位置 - * :匹配前面的字符零次或多次 - + :匹配前面的字符一次或多次 - ? :匹配前面的字符零次或一次 - [] :匹配括号内的任意一个字符 - () :标记一个子表达式的开始和结束位置 - | :匹配两个或多个表达式之一 正则表达式还支持一些特殊的字符类别和转义字符,用于匹配数字、字母、空白字符等特定类型的字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叨陪鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值