正则表达式

前言

正则表达式不是一种编程语言,而是一种可以用于各种编程语言的文本格式,通常用来检索某个符合要求格式的文本。

举例:判断用户输入的手机号是否符合规范(总共11位,纯数字,开头数字是常见的13 15 17 18 19)

phone = input('请输入您的手机号:').strip()
        # 判断用户输入的手机号是否是纯数字
        if phone.isdigit():
            # 判断长度是否是11位
            if len(phone) == 11:
                # 判断是否以13 15 17 18 19电话号码开头  
                if phone.startswith('13') or phone.startswith('15') or phone.startswith(
                    '17') or phone.startswith('18') or phone.startswith('19'):
                    print('手机号是合法的')
                    print(int(phone))
                else:
                    print('手机号开头数字错误')
            else:
                print('手机号必须是11位')
        else:
            print('手机号必须是纯数字')

如果改成使用正则表达式

import re
    phone = input('请输入手机号:').strip()
    if re.match('^[13|15|17|18|19][0-9]{9}',phone):
        print(phone)
    else:
        print('手机号不合法')

所以正则表达式的作用就是用更简便的方式去筛选符合条件的数据。

正则表达式的线上测试网站

正则表达式在线测试 - 站长工具

在网站中可以测试正则表达式的输入是否错误以及结果

字符组

字符组用于修饰数据的条件范围,使用方括号区分每个不同的条件。

在没有修饰的情况下,每个方括号针对一个数据值。

[0-9] # 代表0-9之间任意一个数字

[A-Z] # 代表A-Z之间任意一个字母

[a-z] # 代表a-z之间任意一个字母

[0-9a-zA-Z] #代表任意一个数字和字母

特殊符号

特殊符号用于规定强制匹配范围。

在没有修饰的情况下,每个特殊符号针对后面一个数据值。

.        #匹配除了换行符以外的字符
.w       #只匹配字母数字和下划线
.W       #只匹配字母数字和下划线以外的字符
.d       #只匹配数字
^        #只匹配字符串的开头
$        #只匹配字符串的结尾
a|b      #只匹配字符a或b
()       #给表达式分组,不影响匹配
[]       #匹配括号内的字符
[^]      #匹配括号内以外的字符

量词

量词用于规定字符组连续匹配字符串的个数

在没有修饰的情况下,每个量词针对前面一个数据值。

*        #重复匹配0次或者多次(默认为多次)
+        #重复匹配1次或者多次(默认为多次)
?        #只匹配0次或1次(默认为1次)
{n}      #重复匹配n次
{n,}     #重复n次或者多次
{n,m}    #重复n次到m次

贪婪匹配

在使用量词进行控制匹配数量时,默认会进行贪婪匹配,贪婪匹配是尽可能多地匹配字符个数。

相反可以在量词后面添加?变成非贪婪匹配,非贪婪匹配会选择尽可能少地匹配字符个数。

字符'1211232312312121'

使用贪婪匹配<.*>

结果为'1211232312312121'

使用飞贪婪匹配<.*?>

结果为''

转义

在正则表达式中因为斜杠加字母拥有特殊用途,当需要作为字符使用时,可以使用\来转成普通字符。

在python中可以使用r''

\n  改成  \\n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值