python中的字符串和正则表达式全解

本文详细介绍了Python中的字符串和正则表达式,包括转义字符、正则表达式的基本概念、语法规则和相关注解。文章还深入讲解了Python的re模块,如match、search、split等方法,并通过实例演示了正则表达式的应用,帮助读者掌握正则在字符串处理中的强大功能。
摘要由CSDN通过智能技术生成
一、转义字符

正则表达式是建立在字符串的基础上,当需要在字符中使用特殊字符时,python用反斜杠\转义字符。

如下表:

转义字符                描述
​
\(在行尾时)           续行符
\\                  反斜杠符号
\'                  单引号
\"                  双引号
\a                  响铃
\b                  退格(Backspace)
\e                  转义
\000                空
\n                  换行
\v                  纵向制表符
\t                  横向制表符
\r                  回车
\f                  换页
\oyy                八进制数yy代表的字符,例如:\o12代表换行
\xyy                十进制数yy代表的字符,例如:\x0a代表换行
\other              其它的字符以普通格式输出,例如:\w就是\w,\.就是\.

原始字符串

有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串。如:

print(r'\t\r')
实际输出为“\t\r”。
二、了解正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。

正则表达式的大致匹配过程是:

1.依次拿出表达式和文本中的字符比较,

2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

3.如果表达式中有量词或边界,这个过程会稍微有一些不同。

下图展示了使用正则表达式进行匹配的流程:

file

三、正则表达式的语法规则

下图列出了Python支持的正则表达式元字符和语法:

file

四、正则表达式相关注解

1、数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab?”,将找到”a”。

注:我们一般使用非贪婪模式来提取。

2、反斜杠问题

与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\”表示。同样,匹配一个数字的”\d”可以写成r”\d”。有了原生字符串,妈妈也不用担心是不是漏写了反斜杠,写出来的表达式也更直观勒。

这里一定要注意把正则中的转义与字符串中的转义区分。因为正则表达式是字符串,他是先将代码里书写的格式转变为系统识别的字符串(使用字符串中的转义),再将系统识别的字符串转化为系统识别的正则对象(使用正则中的转义)。

而字符串中的转义,正则都可以识别,而正则中的转义字符串不一定识别。

例如:.\n

在字符串中只能识别\n,不能识别.

在正则中既可以识别.,又可以识别\n

代码示例

import re
text = '.525heart.com\n'   #在系统中表示为   .525heart.com换行
patternstr = '\.525heart.com\n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值