IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 正则表达式匹配的理解 -> 正文阅读

[Python知识库]正则表达式匹配的理解

正则表达式的三步走:

Python字符串的转义?? --》?? 正则表达式转义? --》 内容与转义后原始字符串内容进行匹配

import re

re.search('\\t','\t').group() ?#>>'\t'

1.'\\t' python字符串转义为正则表达式? \t????

2.正则表达式解释 \t 为一个制表符

3.python字符串内容'\t' 转义为原始字符串? 即一个制表符

4.正则表达式 与 原始(正常)字符串匹配? ??

明确两个概念 python字符串原始的字符串

原始字符串? 我就想表达一个反斜杠后面加英文 即 \abc

python字符串? 想表示\原始的意义需要加一个转义字符 即变成'\\abc'

正则表达式 与 原始字符串 进行匹配

例:

import re

pureStr = re.search('\\\\abc','\\abc').group() ?#>>'\\abc' ?

print(pureStr) ?#>>\abc

????????1.pyhon字符串'\\\\abc' --》 正则表达式\\abc? 匹配字符串? \abc

????????2.python字符串'\\abc' --》 原始字符串 \abc

????????3.匹配字符串? 与 原始字符串 一致因而能够匹配上

特殊符号的匹配

例:

1.

import re

re.search('\\~','\~').group() ?#>>'~' ?

print(re.search('\\~','\~').group()) ?#>>~

re.search('\\~','\~').span() ?#>>(1,2)

2.

import re

re.search('\\\\~','\~').group() ?#>>'\\~' ?

print(re.search('\\\\~','\~').group()) ?#>>\~

3.

import re

re.search('\\\\\\~','\\~').group() ?#>>'\\~' ?

print(re.search('\\\\\\~','\\~').group()) ?#>>\~

4.

import re

re.search('\\\\~','\\~').group() ?#>>'\\~' ?

print(re.search('\\\\~','\\~').group()) ?#>>\~

5.

import re

re.search('\\\\\\\\~','\\\\~').group() ?#>>'\\\\~' ?

print(re.search('\\\\\\\\~','\\\\~').group()) ?#>>\\~

为什么会有这种情况?

1号工作流程

?? 1.python字符串'\\~'? --》 正则表达式\~? 匹配字符串~???

从这里我们可以看出正则表达式将? \特殊字符? 都直接解释为该特殊字符?

正则表达式 \#? 匹配字符串? #??? 正则表达式 \=? 匹配字符串 =

? 2.python字符串'\~' --》 原始字符串 \~?

理解为什么原始字符串是\~ 而不是 ~

因为从span()方法可以看出是从母串的第二个字符匹配上的,如果python字符串'\~' 转换为原始字符串为~,那返回值应该是(0,1),从而也知道python字符串并不会转义~,但正则表达式会

? 3.匹配字符串? 与 原始字符串? 去进行匹配

2号

理解为什么group()返回的python字符串是'\\~'

因为若原始字符串是 \~? 所对应的python字符串就应该为 '\\~'

写为'\~'? 不会报错因为python字符串并不会转义~,它知道你想表达的原始字符串为\~,为使得正确表达在底层实际上帮你补了一个'\',因而'\~' 实际上其实是'\\~'

这样整个工作流程也就好理解了

1.python字符串'\\\\~' --》 正则表达式 \\~? 匹配字符串 \~

2.python字符串'\~' --》? 原始字符串\~

3.进行匹配

3号工作流程

1.python字符串'\\\\\\~' --》 正则表达式 \\\~ 匹配字符串 \~? (注:\\匹配\? \~匹配~)

2.python字符串'\\~' --》? 原始字符串\~

3.进行匹配

4号工作流程

1.python字符串'\\\\~' --》 正则表达式 \\~? 匹配字符串 \~

2.python字符串'\\~' --》? 原始字符串\~

3.进行匹配

5号工作流程

1.python字符串'\\\\\\\\~' --》 正则表达式 \\\\~? 匹配字符串 \\~

2.python字符串'\\\\~' --》? 原始字符串\\~

3.进行匹配

转义字符的匹配

例:

1.

import re

re.search('\n','\n').group()??? #>>'\n'

print(re.search('\n','\n').group())

2.

import re

re.search('\\n','\n').group()? #>>'\n'

print(re.search('\\n','\n').group())

3.

import re

re.search('\\n','\\n').group()?? #报错

print(re.search('\\n','\\n').group())

为什么1和2结果一样,3却报错

模拟1.流程:

1.python字符串'\n' --》正则表达式 一个换行符? 匹配一个换行符??

怎么理解:假设python字符串为'a'? --》正则表达式? a? (即一个固定a字符,这里a和换行符一个概念,都是固定字符)? 因此正则表达式 a 匹配字符串 a????? 同理正则表达式 换行符? 匹配字符串换行符

2.python字符串'\n' --》 原始字符串 一个换行符

3.进行匹配

模拟2.流程:

1.python字符串'\\n' --》正则表达式 \n? 匹配字符串 一个换行符

2.python字符串'\n' --》 原始字符串 一个换行符

3.进行匹配

模拟3.流程:

1.python字符串'\\n' --》正则表达式 \n? 匹配字符串 一个换行符

2.python字符串'\\n' --》 原始字符串 \n

3.换行符 与 \n 不匹配? 换行符等价于字符a是一个字符,而原始字符串\n 是两个字符

总结:

说了这么多,总算把这几个概念理清楚了。

在实际运用中,还是直接 r'' 来就好了,这样就没有python字符串转义这一中间过程了

例:想匹配字符串 \sub

import re

re.search(r'\\sub',r'\this is a sample \subsription').group() ?#>>'\\sub'

print(re.search(r'\\sub',r'\this is a sample \subsription').group()) #>>\sub

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:06:36  更:2022-04-04 12:11:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:44:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码