python正则表达式验证码_python+re(正则表达式)快速理解(附加练习)

# 匹配单个字符规则. 匹配任意一个字符(除了\n外)

[] 匹配[]中列举的字符

\d 匹配数字,即0-9

\D 匹配非数字

\s 匹配空白、即空格、tab键

\S 匹配非空白

\w 匹配单词字符,即a-z,A-Z,0-9,_四种类型

\W 匹配非单词字符

# 匹配多位字符规则(注意是“前一个”的字眼)* 匹配前一个字符出现0次或者无限次,即可有可无

+ 匹配前一个字符出现1次或者无限次,即至少有1次

? 匹配前一个字符出现1次或者0次,即要么有1次,要么有0次

{m} 匹配前一个字符出现m次

{m,n} 匹配前一个字符出现m到n次

# 匹配开头与结尾^ 必须在字符串开头匹配

$ 必须在字符串结尾匹配

# 转义字符\ 如果需要匹配上面列举的符号时候,需家反斜杠。即\.代表. \{m\}代表{m}

# 正则在线测试

# 函数的使用

# match 从开头开始匹配,取结果一般用group()函数

#coding=utf-8

import re

ret = re.match(r"正则表达式1", "匹配的字符正则表达式\d")

if rel:

print(ret.group())

else:

print("没有匹配到结果")

# search 相当于查找,不重头开始匹配,但是一旦匹配到就返回

#coding=utf-8

import re

re.search("正则表达式", "字符串")

# findall 以list类型返回所有结果

#coding=utf-8

import re

re.findall("正则表达式", "字符串")

# sub 先拿正则表达式去匹配字符串,然后替换匹配的结果。

re.sub(r"正则表达式", "替换的字符", "字符串")

# 替换的字符这参数,不一定是一个字符串,也可以是一个函数

# split 根据匹配进行分割字符串,并且返回一个列表

#coding=utf-8

import re

ret = re.split(r":| ", "正则表达式:已冒号:或者空格 进行分割")

print(ret)

# 练习

1、匹配整数或者小数(包括正数和负数)

-?\d+(\.\d+)?

-?表示-匹配0次或一次,\d表示整数,+表示匹配一次或多次,(\.\d+)?表示小数

2、匹配年月日日期 格式2018-12-6

^[1-9]\d{0,3}-(1[0-2]|0?[1-9])-(3[01]|[12]\d|0?[1-9])$

1.^[1-9]表示年是以数字1-9开头的,\d{0,3}表示年的位数,^[1-9]\d{0,3}就表示1-9999年之间

2.(1[0-2]|0?[1-9])中|前面的1[0-2]表示从10到12,后面的0?[1-9]表示01-09或者1-9,

(1[0-2]|0?[1-9])表示月,01-12或者1-12

3.(3[01]|[12]\d|0?[1-9])$其中3[01]表示30或31,[12]\d表示从10-29,最后的0?[1-9]表示从

01-09或者是从1-9.整体就表示从01-31或者1-31

3、匹配qq号

[1-9]\d{4,11}

表示5位到12位qq.第一位为非0

4、11位的电话号码

1[3-9]\d{9}

第一位数字为1,第二位为3-9,后面随便9位数

5、长度为8-10位的用户密码 : 包含数字字母下划线

\w{8,10}

........最简单的,不写解释了

6、匹配验证码:4位数字字母组成的

[\da-zA-Z]{4}或者[0-9a-zA-Z]{4}

[ ]里面的表示数字,或者a-z或者A-Z,{4}表示4位

7、匹配邮箱地址

[0-9a-zA-Z][\w\-.]+@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*\.[A-Za-z0-9]{2,6}

[0-9a-zA-Z][\w\-.]+@前面必须有内容且只能是字母(大小写),数字,下划线,减号,点

[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\-]+)*@和最后一个点之间必须有内容且只能是字母(大小写),数字,点,减号,且两个点不能挨着

[A-Za-z0-9]{2,6}最后一个点之后必须有内容且内容只能是字母(大小写),数字长度为大于等于2,小于等于6

8、从类似

wahaha

banana

qqxing

这样的字符串中,

1)匹配出wahaha,banana,qqxing内容。

\w{6}

>\w+<

2)匹配出a,b,h1这样的内容

9、1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2))

1)从上面算式中匹配出最内层小括号以及小括号内的表达式

\([^()]+\)\(和\)表示前后位( ),[^()]就表示外面的()里面没有()

10、从类似9-2*5/3+7/3*99/4*2998+10*568/14的表达式中匹配出从左到右第一个乘法或除法

\d+[*/]\d+[*/]前后的\d+表示*或/前面的整数,可能是多位数字,要加+

你可能感兴趣的:(python正则表达式验证码)