分享一些Python 常见的正则表达式示例

2025-03-29 01:21:39 24 分享链接 开发笔记 python

正则表达式解释

r"(本章未完.*":r 表示原始字符串,避免转义字符的影响。(本章未完 是要匹配的起始文本,.* 表示匹配任意数量的任意字符。
r"oread8":匹配包含 “oread8” 的文本。
正则表达式是一种强大的文本匹配工具,在 Python 里可以借助 re 模块使用。下面为你分享一些常见的正则表达式示例以及对应的 Python 代码:

1. 匹配邮箱地址

邮箱地址通常由用户名、域名和顶级域名组成,格式为 username@domain.com

import re

email_pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
email = 'example@example.com'
if re.match(email_pattern, email):
    print(f'{email} 是有效的邮箱地址')
else:
    print(f'{email} 不是有效的邮箱地址')

解释

  • ^:匹配字符串的开始。
  • [a-zA-Z0-9_.+-]+:匹配一个或多个字母、数字、下划线、点、加号或减号。
  • @:匹配邮箱地址中的 @ 符号。
  • [a-zA-Z0-9-]+:匹配一个或多个字母、数字或减号。
  • \.:匹配邮箱地址中的点。
  • [a-zA-Z0-9-.]+:匹配一个或多个字母、数字、减号或点。
  • $:匹配字符串的结束。

2. 匹配手机号码

在中国,手机号码通常是 11 位数字,以 1 开头。

import re

phone_pattern = r'^1[3-9]\d{9}$'
phone = '13800138000'
if re.match(phone_pattern, phone):
    print(f'{phone} 是有效的手机号码')
else:
    print(f'{phone} 不是有效的手机号码')

解释

  • ^:匹配字符串的开始。
  • 1:匹配手机号码的第一位数字。
  • [3-9]:匹配手机号码的第二位数字,范围是 3 到 9。
  • \d{9}:匹配 9 个数字。
  • $:匹配字符串的结束。

3. 匹配 HTML 标签

HTML 标签以 < 开头,以 > 结尾。

import re

html_pattern = r'<[^>]+>'
html = '<p>这是一个段落</p>'
tags = re.findall(html_pattern, html)
print(f'匹配到的 HTML 标签:{tags}')

解释

  • <:匹配 HTML 标签的开始符号。
  • [^>]+:匹配一个或多个非 > 字符。
  • >:匹配 HTML 标签的结束符号。

4. 匹配日期(格式:YYYY-MM-DD)

日期通常由年、月、日组成,格式为 YYYY-MM-DD

import re

date_pattern = r'^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$'
date = '2024-10-01'
if re.match(date_pattern, date):
    print(f'{date} 是有效的日期')
else:
    print(f'{date} 不是有效的日期')

解释

  • ^:匹配字符串的开始。
  • \d{4}:匹配 4 个数字,表示年份。
  • -:匹配日期中的连字符。
  • (0[1-9]|1[0-2]):匹配月份,范围是 01 到 12。
  • -:匹配日期中的连字符。
  • (0[1-9]|[12][0-9]|3[01]):匹配日期,范围是 01 到 31。
  • $:匹配字符串的结束。

5. 匹配 IP 地址

IP 地址由四个数字组成,每个数字范围是 0 到 255,用点分隔。

import re

ip_pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
ip = '192.168.1.1'
if re.match(ip_pattern, ip):
    print(f'{ip} 是有效的 IP 地址')
else:
    print(f'{ip} 不是有效的 IP 地址')

解释

  • ^:匹配字符串的开始。
  • (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):匹配一个 0 到 255 之间的数字。
  • \.:匹配 IP 地址中的点。
  • {3}:重复前面的模式 3 次。
  • (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?):匹配最后一个 0 到 255 之间的数字。
  • $:匹配字符串的结束。

这些示例能帮你理解正则表达式的基本用法,你可以根据具体需求对正则表达式进行调整。

分享一些Python 常见的正则表达式示例