python 正则
之前学过正则,久不用忘记了,没有笔记,现在重新学习一遍
学习
## search:只查询一次,直到出现第一个匹配
## 匹配a或c
import re
print(re.search('[ac]','acd').group())
## 输出: a
## 匹配ac
import re
print(re.search('ac','acd').group())
## 输出: ac
## 以a或c作为开头匹配
import re
print(re.search('^[ac]','acd').group())
## 输出: a
print(re.search('^[ac]','bacd').group())
## 返回null,group报错
## 除了以a,c作为匹配,其他字符都可以
import re
print(re.search('[^ac]','cbad').group())
## 输出: b
print(re.search('[^ac]','ca2d').group())
## 输出: 2
## findall:返回数列,查询所有能够匹配的字符
## 查询除a-z以外的字符
import re
print(re.findall('[^a-z]','ah12d$'))
## 输出: ['1', '2', '$']
## 匹配结尾为a-z的字符
import re
print(re.search('[a-z]$','a12b3e').group())
## 输出: e
print(re.search('[a-z]$','a12b3').group())
## 返回null,group报错
## 返回以a-z和A-Z连续3个字母匹配成功的字符串
import re
print(re.search('[a-zA-Z]{3}','a3bc4def').group())
## 输出: def
实例
## 匹配手机号
import re
print(re.search('1[3-8][0-9]{9}','188261236789'))
## 匹配成功,但是号码是12位,不太准确,以上是包含关系
print(re.search('^1[3-8][0-9]{9}$','188261236789'))
## 匹配失败,要以1开头,以9个号码结尾
print(re.search('^1[3-8][0-9]{9}$','18826123678'))
## 匹配成功
## 匹配qq号
import re
print(re.search('[1-9]\d{4,9}','79339045668'))
## 11位号码匹配了10位
## 输出:<_sre.SRE_Match object; span=(0, 10), match='7933904566'>
print(re.search('[1-9]\d{4,9}$','79339045668'))
## 11位号码匹配了后10位
## 输出:<_sre.SRE_Match object; span=(1, 11), match='9339045668'>
print(re.search('^[1-9]\d{4,9}$','79339045668'))
## 匹配失败
## 输出:None
学习
…