python正则表达式知识汇总
-
首先在python中使用正则表达式得先导入re模块:
importre -
re模块
-
全称:regex (正则表达式)
-
有了re模块就可以在python语言中操作正则表达式。
-
-
-
自动化运维或开发
-
爬虫
-
-
什么是正则?
-
pass
-
-
能做什么:
-
检测一个输入的字符串是否合法:用户输入一个内容的时候,我们要提前做检测,能够提高程序的 开发效率和减轻服务器的压力(表单验证)
-
从一个大文件中找到所有符合规则的内容:能够高效的从一大段文字中快速找到符合规则的内容。
-
-
正则规则:
-
字符组 [] :一个[]指标数一个字符的位置。
-
例如:[abc]只匹配a or b or c
-
-
[0-9] : 根据sacii进行范围比对。[a-z] [A-Z]
-
[0-9] ——————> \d
-
数字、字母、下划线 ------> \w = [0-9a-zA-Z_]
-
空白(\t \n 空格)——————> ( |\t|\n) == \s
-
-
元字符:匹配规则
-
[]、\d、\s、\t、\n、
-
\W 非数字字母下划线
-
\D 不是数字就能匹配上
-
\S 只要不是空白符都能匹配上
-
. 匹配除了换行符之外所有的
-
下面是非字符组:
[^]非字符组,匹配所有的非数字,[^1] 除1外的所有字符。 -
$ 匹配字符串的结尾
-
^ 匹配开头 除在[]中,永远放正则表达式的最前
-
| 或,
-
例子:ad|bc ,缺点 ab|abc,从左到右去匹配,当匹配到了ab,就不会去匹配abc了,所以有重叠的时候,长的要放左边。
-
-
()分组的作用:
-
分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式 的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推, 需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。 分完组以后,要想获得某个分组的内容,直接使用group(num)和groups()函数去直接提取就行。
-
-
\b 匹配结尾
-
-
量词(一个量词只能约束前面一个字符)
-
{n} 表示匹配N次
-
{n,} 大于等于n
-
{n,m} 大于n小于m
-
? 0次或1次
*0次或多次
+一次或者多次
-
-
分组作用:\d+(.\d+)?
# 匹配手机号码 1 开头 第二位3-9 11位
s= '^1[3-9]\d{9}$'
s1= '1[3-9]\d{9}' -
贪婪匹配
importre
k= '12312414124'
s= '\d{3,9}?' # 量词后面加 ? 非贪婪匹配
p1= re.compile(s)
print(p1.findall(k)) # ['123', '124', '141'] -
转义符 \
-
正则的使用列子:
# 用正则实现 18/15身份证的匹配:
# 分析:
# 15 :首位:1-9中的一个数,后面14位任意数字
# 18 :首位:1-9中的一个数,后面16位任意数字,
# 最后一位 0-9中任何一位或者x
# 15位身份证的正则:
^[1-9]\d{14}$
# 18位:
^[1-9]\d{16}[x\d]$
# 同时匹配15位和18位方法一:
^([1-9]\d{16}[x\d]|[1-9]\d{14})$
# 同时匹配15或18 方法二:
^[1-9]\d{14}(\d{2}[\dx])?$

浙公网安备 33010602011771号