python-正则表达式

好久不见. 提交于 2020-03-01 11:54:42

1.匹配指定字符

# [] 原子表,存储表达式、字符集合
pattern = re.compile('[a]')
# 参数写成a-c 则是匹配以abc任意一个字母,a-z匹配任意一个小写字母,写成[a][b]则是匹配ab
# 匹配一个汉字[\u4e00-\u9fa5]
pattern1 = re.compile('[b]')
result = pattern.match('baa')
result1 = pattern1.match('baa')
print(result)  # 输出结果:None
print(result1)  # 输出结果:<re.Match object; span=(0, 1), match='b'>

2.“^”

# “^” 在原子表外,表示包含;在原子表内,表示除了什么之外
pattern = re.compile('^a[a-zA-Z0-9]')
# 判断是不是已一个a和一个字母或者数字开头
result = pattern.match("a0a")
print(result)  # # 输出  <re.Match object; span=(0, 2), match='a0'>

# 如果以字母或者数字开头则返回None
pattern = re.compile('[^a-zA-Z0-9]')
result = pattern.match('a.a')
print(result)  # 输出None

pattern = re.compile('^[0-9]{4,}')
result = pattern.match("3337")
print(result)
# 输出结果:<re.Match object; span=(0, 4), match='3337'>
# 如果少于三个会出现None,如果想限制是纯数字可以在后面加上$

3.“$”

# “$” 表示结尾 ^和$搭配来使用,才能限制你匹配的内容和长度
# “{m}表示前面的数量是m个,{m,n}表示数量从m到n个,{m,}表示数量最少m个,都不可以单独使用”
# 匹配手机号
pattern = re.compile('^1[3-8][0-9]{9}$')
result = pattern.match("18607714592")  # 输出结果 <re.Match object; span=(0, 11), match='18607714592'>
print(result)
# 匹配QQ号  我记得QQ号最少五位,最多十一位,只能是1-9开头
pattern = re.compile('^[1-9][0-9]{4,10}$')
result = pattern.match("9771345")
print(result)  # 输出结果  <re.Match object; span=(0, 7), match='9771345'>

4.“?”

# “?” 可有可无, 匹配前边表达式0次或者1次
# 判断正负数
pattern = re.compile('^[+-]?[0-9]')
result = pattern.match("-9")
print(result)  # 输出结果 <re.Match object; span=(0, 1), match='-9'>
result = pattern.match("9")
print(result)  # 输出结果 <re.Match object; span=(0, 1), match='9'>

5.“.”

# “.” 匹配\n意外的任何字符
pattern = re.compile('.')
result = pattern.match('\n')
print(result)  # 输出结果 None
result = pattern.match('\r')
print(result)  # 输出结果 <re.Match object; span=(0, 1), match='\r'>

6.“*”

# “*” 匹配字符前边任意次相当于{0,}
pattern = re.compile('a*')
result = pattern.match('aa')
print(result)  # 输出结果  <re.Match object; span=(0, 0), match='aa'>    

# “.*”   匹配除了换行符以外任意多次
# (?:pattern) # 返回包含括号里的值
result = re.findall('Windows(?:95|98|NT|2000|7)','Windows98NTWindows95')
print(result)  # 输出结果 ['Windows98', 'Windows95']

# (?=pattern)  返回不包含括号里的值
result = re.findall('Windows(?=95|98|NT|2000|7|ME|XP)','Windows95,WindowsXP,Windows03')
print(result)
# 输出结果  ['Windows', 'Windows']  返回的两个Windows是Windows95,WindowsXP中的Windows

# (?!pattern)只返回不包含内容
result = re.findall("Windows(?!95|98|NT|2000)","Windows03Windows2000")
print(result)
# 输出结果  ['Windows']  返回的Windows是Windows03中的Windows

# 特殊字符及其含义:\d [0-9]  \D[^0-9]  \w [a-zA-Z0-9] \W [^a-zA-Z0-9]  \s匹配空白字符  \S匹配非空白字符
# 普通字符:1-9、a-zA-Z
# 元字符:^ $ . * + ? = ! : | \ / () [] {}   由于它们是构造各种匹配复杂文本正则表达式的基本字符,所以被称为元字符
# 非打印字符:\n \r \s \S \t \v

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!