正则表达式以及re模块的使用

内容概要

  • 正则表达式简介
  • 字符组
  • 特殊符号
  • 量词
  • 贪婪匹配与非贪婪匹配
  • 取消转义

正则表达式简介

'''正则表达式是一门语言,如果想在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'
posted @ 2021-11-24 19:47  elijah_li  阅读(46)  评论(0编辑  收藏  举报
//一下两个链接最好自己保存下来,再上传到自己的博客园的“文件”选项中