Products
GG网络技术分享 2025-03-18 16:15 1
想要将以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