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

想要将以1开头的电话号码取出 为什么用^运算符匹配字符串开头 a= re.findall('^1\\d{10}',mess) 打印出来的会是空列表
你这哪里有开头是1的字符串啊
没有就匹配不上
下面的表达式,表示以1开头的10个字符
上面的表达式,表示字符串以1开头,你字符串里并不是以1开头的,匹配不上不很正常吗
正则中的^要求从其实位置进行匹配
学习 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 库主要函数如下:
compile ;search 、 match 、 findall 、 split 、 finditer 、 sub 。在正式学习之前,先了解一下原生字符串。
在 Python 中,表示原生字符串,需要在字符串前面加上 r 。 例如 my_str = 'i'am xiangpica' 在程序中会直接报错, 如果希望字符串中 ' 可以正常运行,需要加上转移字符 \\ ,修改为 my_str = 'i\\'am xiangpica' 。 但这样结合上文正则表达式中的操作符,就会出现问题,因为 \\ 在正则表达式中是有真实含义的, 如果你使用 re 库去匹配字符串中的 \\ ,那需要使用 4 个反斜杠,为了避免这种情况出现,引入了原生字符串概念。
Demand feedback