正则表达式

正则表达式

image

1、正则表达式

# 正则表达式
# 什么是正则表达式
正则表达式就是利用一些特殊字符的组合从一串字符中筛选出符合条件的数据
'''
正则表达式是一么独立的语言,和其他的编程语言没有关系
如果想在python代码中使用正则表达式,需要借助于内置re模块
'''
# 正则表达式的应用场景1
# 当在某个网页需要用手机号注册时,就可以利用正则表达式简化我们的代码量
'''
用户输入要求:
    1、必须是11位
    2、必须是纯数字
    3、必须是符合规范的手机号,13,15,17,18,19开头
'''
# 1、我们先利用正常的代码编写
# 获取用户输入并进行判断
phone = input('请输入你的手机号:').strip()
if len(phone) == 11:
    if phone.isdigit():
        if phone.startswith('13') or phone.startswith('15') or phone.startswith('17') or phone.startswith('18') or phone.startswith('19'):
            print('注册成功')
        else:
            print('输入不合法')
    else:
        print('格式错误')
else:
    print('手机号必须11位')
# 2、利用正则表达式
import re

phone_number = input('please input your phone number : ')
if re.match('^(13|14|15|18)[0-9]{9}$', phone_number):
    print('是合法的手机号码')
else:
    print('不是合法的手机号码')

image

2、字符组

# 字符组
# 字符组的特征:
'''
使用中括号括起来,字符串默认只能单个单个字符匹配
[0123456789]  # 匹配0到9之间的任何一个数字
可简写为[0-9]
[a-z]  # 匹配小写字母a到字母z之间的任意一个字母
[A-Z]  # 匹配大写字母A到字母Z之间的任意一个字母
[a-zA-Z0-9]  # 匹配所有的数字,大小写字母。不能使用逗号或者空格或者特殊字符隔开
'''

image

3、特殊符号

# 特殊符号
# 特殊符号默认也是只能单个单个字符匹配
'''
.   	匹配除换行符以外的任意字符
\d      匹配数字
^       匹配字符串的开头(以什么开头)
$       匹配字符串的结尾(以什么结尾)
^和$组合使用可以精准限制要查找的数据
a|b     匹配字符a或者字符b
()    匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配,只是单纯的分组而已)
[...]   匹配字符组中的字符
[^...]  匹配除了字符组中字符的所有字符
'''

image

4、量词

# 量词
# 1、表达式在没有量词修饰的情况下,都是单个单个的匹配
# 2、量词必须结合字符组、特殊字符等一起使用,不能单独出现
# 3、量词只能影响前面的单个表达式(ab+ +号只能影响b)
'''
*       重复零次或者更多次
+       重复一次或更多次
?       重复0次或1次
{n}      重复n次
{n,}     重复n次或者更多次
{n,m}   重复n到m次
正则表达式中的量词默认都是'贪婪匹配'(尽可能的取,越多越好)
'''


image

5、贪婪匹配与非贪婪匹配

# 贪婪匹配与非贪婪匹配
'''
# 待匹配的字符串
<script>123</script>
# 正则表达式
<.*>  默认贪婪匹配 尽可能多的匹配
# 将贪婪匹配变为非贪婪匹配,只需要在量词的后面加问号即可
<.*?>  非贪婪匹配,尽可能少的匹,结束条件由左右两边决定
'''

image

posted @ 2021-11-24 19:15  PyLy  阅读(98)  评论(0)    收藏  举报

念两句诗

入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极。
【唐代】李白