内容概要
- 正则表达式简介
- 字符组
- 特殊符号
- 量词
- 贪婪匹配与非贪婪匹配
- 取消转义
正则表达式简介
'''正则表达式是一门语言,如果想在python中使用,需要导入re模块'''
# 什么是正则表达式?
利用一些特殊符号的组合去字符串中筛选出符合条件的数据
"""
1.必须是11位
2.必须是纯数字
3.必须符合手机号的排布 15 16 18 19
"""
# phone = input('请输入你的手机号>>>:').strip()
# if len(phone) == 11:
# if phone.isdigit():
# if phone.startswith('15') or phone.startswith('16') or phone.startswith('18') or phone.startswith('19'):
# print('手机号正确')
# else:
# print('格式不对')
# else:
# print('手机号必须是纯数字')
# else:
# print('必须是11位')
# 正则表达式
import re
while True:
phone = input('please input your phone number:')
if re.match('^(15|16|17|18)[0-9]{9}$', phone):
print('合法')
break
else:
print('格式不对')
字符组
'''
特征是使用中括号括起来,字符组默认只能单个单个字符匹配
'''
[0123456789] # 表示匹配中括号内任何一个数字
简写为 [0-9]
[a-z] # 匹配小写字母a到字母b其中任意一个字母
[A-Z] # 匹配大写字母A到字母Z其中任意一个字母
[a-zA-Z0-9] # 匹配所有数字 大小写字母
特殊符号
# 特殊符号默认也只能单个单个字符匹配
. '匹配'除了换行符之外的任意字符
\d 匹配纯数字
^ 匹配字符串的开始(判断是否以^后面的字符开头)
$ 匹配字符串的结尾(判断是否以$前面的字符结尾)
'''^与$组合使用可以精准限制要查找的数据'''
a|b 匹配a或者b
() 匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配,只是单纯的分组)
[...] 匹配字符组中的字符
[^...] 取反,除了字符组内的字符,其它字符都可以识别
量词
1、表达式在没有量词修饰时,都是单个单个匹配的
2、量词必须与字符串或者特殊符号一起使用,不能单独使用
3、量词只能修饰它前一个字符或表达式,ab+ , 只表示b能重复一次或者无数次
* 重复零次或者更多次
+ 重复1次或者更多次
? 重复0次或者1次
{n} 重复n次
{n, } 重复n次或更多次
{n, m} 重复n次到m次
'''正则表达式中的量词默认都是“贪婪匹配”'''
贪婪匹配与非贪婪匹配
# 带匹配的字符串
<script>123</script>
# 正则表达式
<.*> '''默认贪婪匹配,尽可能多的匹配'''
匹配结果:<script>123</script>
# 将贪婪变为非贪婪,只需要在量词的后面加上问好即可
<.*?> '''非贪婪匹配,尽可能少的匹配,结束条件由左右两边决定'''
匹配结果:<script>,</script>
取消转义
在正常的原生表达式中,要取消转义字符只有一种方法,'\', --> 1、取消一个: '\\n', 取消两个: '\\\\n'
在python的环境中,还提供另一种快捷方便的方法: r'D:\n\r\a'