【python 正则表达式:太复杂了所以通过练习-1(电话号码-日期)】编写常见格式的字符串的正则表达式来由浅入深的认识它

1. 匹配电话号码

编写一个程序,从字符串中匹配电话号码。

电话号码的格式为:
  1. 开头是 1
  2. 第二位在3-9之间
  3. 后9位可以是任意数字。

代码如下:

import re
def match_phone_number(string):
    pattern = r"^(1[3-9]\d{9})$"
    match = re.match(pattern, string)
    if match:
        return True
    else:
        return False
string = "1234567"
print(match_phone_number(string)) # False
string = "13555555555"
print(match_phone_number(string)) # True

解释

  1. ^$是开始和结束的标志;
  2. 1表示第一位必须是1;
  3. [3-9]表示第二位必须是3-9之间的数字;
  4. \d表示后面部分是一个数字,{9}这样的数字有9个,不限区间0-9;

我们学到了什么

  1. 知道了开始和结束的标志是 ^ $;
  2. 知道了原来字符的位置有如此严格的占位限制;
  3. 知道了 [] 代表字符集合;
  4. 知道了 3-9 代表区间;
  5. 知道了 \d 代表数字匹配;
  6. 知道了 {} 代表要匹配多少次;

2. 匹配日期

编写一个程序,从字符串中匹配日期。

日期的格式为:
  1. 年月日共有八位数字;

代码如下:

import re
from datetime import datetime

def match_date(string):
    pattern = r"^\d{8}$"  # 更正为8位数字
    match = re.match(pattern, string)
    if match:
        try:
            # 尝试将字符串转换为日期
            datetime.strptime(string, "%Y%m%d")
            return True
        except ValueError:
            return False
    else:
        return False
string = "20210101"
print(match_date(string)) # True
string = "19991231"
print(match_date(string)) # True

解释

  1. ^$是开始和结束的标志;
  2. \d表示后面部分是一个数字,{8}这样的数字有8个,不限区间0-9;

我们学到了什么

  1. 知道了开始和结束的标志是 ^ $;
  2. 知道了原来字符的位置有如此严格的占位限制;
  3. 知道了 \d 代表数字匹配;
  4. 知道了 {} 代表要匹配多少次;

日期的格式应该有更复杂的格式,大家可以去研究研究,但这种应该是最简单了。欢迎留言讨论。

下一部分 邮箱、IP地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flos chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值