其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

python正则表达式^运算符

GG网络技术分享 2025-03-18 16:15 1


问题描述:

想要将以1开头的电话号码取出 为什么用^运算符匹配字符串开头 a= re.findall('^1\\d{10}',mess) 打印出来的会是空列表

网友观点:

你这哪里有开头是1的字符串啊
没有就匹配不上
下面的表达式,表示以1开头的10个字符
上面的表达式,表示字符串以1开头,你字符串里并不是以1开头的,匹配不上不很正常吗

正则中的^要求从其实位置进行匹配

【Python知识点共建】正则表达式

Python 正则表达式是什么

学习 Python 正则表达式离不开 re 模块,所以本篇博客会配合 re 模块进行编写。

re 库是 Python 中处理正则表达式的标准库,本篇博客介绍 re 库的同时,会简单介绍一下正则表达式语法, 如果想深入学习正则表达式,还需要好好下一番功夫。

怎么用

正则表达式语法

正则表达式语法由字符和操作符构成,初期阶段掌握下述这些内容即可。

操作符说明例子
.任何单个字符,极少不能匹配
[]字符集,对单个字符给出取值范围[abc] 表示匹配 a、b、c,[a-z] 表示 a 到 z 单个字符
[^]非字符集,对单个字符给出排除范围[^abc] 表示匹配 非 a、非 b、非 c 的单个字符
*前一个字符 0 次或无限次扩展abc* 表示 ab、abc、abcc、abccc 等
+前一个字符 1 次或无限次扩展abc+ 表示 abc、abcc、abccc 等
?前一个字符 0 次或 1 次abc? 表示 ab、abc
|左右表达式任意一个abc|def 表示 abc 或者 def
{m}扩展前 1 个字符 m 次ab{2}c,表示 abbc
{m,n}扩展前 1 个字符 m 到 n 次ab{1,2}c,表示 abc、abbc
^匹配字符串开头^abc 表示 abc 在字符串开头
$匹配字符串结尾abc$ 表示 abc 在字符串结尾
()分组标记,内部仅能使用 | 操作符(abc) 表示 abc,(a
\\d数字,等价于 [0-9]
\\w字符,等价于 [A-Za-z0-9]

以上表示仅仅为正则表达最基础部分内容,如果希望深入研究正则表达式,建议寻找更加全面的资料进行学习,本文只做药引。

re 库基本用法

re 库主要函数如下:

  • 基础函数: compile
  • 功能函数: searchmatchfindallsplitfinditersub

在正式学习之前,先了解一下原生字符串。

在 Python 中,表示原生字符串,需要在字符串前面加上 r 。 例如 my_str = 'i'am xiangpica' 在程序中会直接报错, 如果希望字符串中 ' 可以正常运行,需要加上转移字符 \\ ,修改为 my_str = 'i\\'am xiangpica' 。 但这样结合上文正则表达式中的操作符,就会出现问题,因为 \\ 在正则表达式中是有真实含义的, 如果你使用 re 库去匹配字符串中的 \\ ,那需要使用 4 个反斜杠,为了避免这种情况出现,引入了原生字符串概念。

标签:

提交需求或反馈

Demand feedback