python 正则表达式 转义字符 反斜杠 原始字符串 r‘‘

关于反斜杠,转义字符总有人问我,今天写一下,我拜读了几篇文章,如下链接,链接如下:
https://blog.csdn.net/jinixin/article/details/56705284
https://www.cnblogs.com/miaoning/p/11450659.html

引用文章里的话,首先一切问题或者误会,麻烦,烦恼的原因就是反斜杠在字符串里有转义的作用,在正则里有转义的作用,最关键都是以string形式工作。就乱套了
所以我是这么理解的,我们写的正则表达式,我称之为表达式,这个表达式能够正则化,经历两个过程,或者说经历了两个计算机底层函数,首先是一个字符串函数,我们将表达式输入给字符串函数,字符串函数解释后生成字符串函数的返回值,这个返回值再作为正则函数的输入值,最终正则函数的产出最终结果。
如果理解这个过程,再去理解反斜杠使用原理或者使用规则。如下:

1.字符串转义

反斜杠,在字符串里是转义字符的最重要的组成,这里不赘述,所以在一个字符串里,**反斜杠第一任务是转义,不是第一先代表它自己,如果一旦后面的字符能够形成转义字符,那它后面的字符就组成转义字符。如果我们要这种情况下,想表达一个反斜杠,需要在反斜杠后面再加一个反斜杠,进行再次转义,转成它自己本来的意思反斜杠!**每次这么写很麻烦我们可以在引号前面加一个r,也就是raw string,便可省略了这一个工作,因为一旦文本多了,你会很乱。实例如下图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 正则转义

正则函数这边需要一个字符串返回值,这个返回值进行正则化,比如我们要展示数字,那需要可以写\d这个形式,对于正则函数来了说,需要一个反斜杠和字母d来进行正则转义,那需要的反斜杠需要字符串的返回值中含有,要想字符串返回值中含有反斜杠,在字符串函数里输入值中反斜杠要么前面再加一个反斜杠,将反斜杠第一命令转义 转换成反斜杠本身的意义,或者如上所述的字符串前面加一个r进行操作。

具体分析讲解请看下面的图和图解。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### Python正则表达式转义字符使用方法 在 Python正则表达式中,某些字符具有特殊的含义,为了匹配这些特殊字符本身,需要对其进行转义。这涉及到两层转义:一层是在字符串层面,另一层是在正则表达式引擎层面[^2]。 #### 基本概念 当编写正则表达式模式时,如果想要匹配像 `.`、`*` 或 `\` 这样的元字符,就需要在其前加反斜杠来取消其特殊意义并将其视为普通字符。例如: ```python import re pattern = r'\.' text = "This is a test string with dots..." matches = re.findall(pattern, text) print(matches) # 输出所有的句号 [.] ``` 上述例子展示了如何利用反斜杠使点号失去通配符功能而成为字面意义上的`.`[^1]。 对于一些常见的字符类,Python 提供了预定义好的转义序列以便于描述特定类型的字符集合。比如`\d`代表任意一位数字(0-9),要查找所有连续的数字可以这样做: ```python number_pattern = r'\d+' numbers_in_text = 'Price: $876.54' found_numbers = re.findall(number_pattern, numbers_in_text) print(found_numbers) # ['876', '54'] ``` 这里使用的`\d`就是一种由反斜杠开头的特殊序列,它用来简化对常见字符集的操作[^3]。 值得注意的是,在构建包含大量反斜杠正则表达式时,建议总是采用原始字符串(raw strings),即以字母'r'作为引号之前缀的形式书写字符串。这样做的好处是可以减少不必要的双倍反转斜线问题,提高可读性和维护性。 #### 实际应用案例 假设有一个需求是要在一个文本文件里找到所有的电子邮件地址,则可以通过组合不同的转义字符实现这一目标: ```python email_regex = r'[a-]+\.[a-zA-Z0-9-.]+' sample_emails = """ Contact us at support@example.com or sales@company.co.uk. For more information visit our website http://www.example.org. """ emails_found = re.findall(email_regex, sample_emails) for email in emails_found: print(f"Found Email Address: {email}") ``` 这段代码片段说明了怎样运用多种转义字符以及字符组去精确地定位复杂的结构化数据——这里是电子邮件格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值