python正则表达式

Python中的正则表达式是一种强大的文本处理工具,它允许你使用特殊的字符和元字符来定义搜索模式。以下是一些基本概念和示例,帮助你理解如何在Python中使用正则表达式:

基本概念

  1. 模式(Pattern) :用特定语法描述的字符串模式。

  2. 元字符(Metacharacters) :具有特殊含义的字符,如 .(匹配任意字符)、*(匹配前一个字符0次或多次)等。

  3. 字符类(Character Classes) :用方括号[]定义的字符集合,如 [a-z]匹配任何小写字母。

  4. 量词(Quantifiers) :指定前面的模式应该匹配多少次,如 *+{n,m} 等。

  5. 分组(Groups) :用括号()将模式的一部分组合在一起,可以捕获匹配的子字符串。

Python正则表达式使用

在Python中,使用正则表达式需要导入re模块。下面是一些基本的使用方法:

导入模块

import re

匹配文本中的数字

text = "我有12个苹果和3个香蕉"
pattern = r'\d'
numbers = re.findall(pattern, text)
print(numbers)  # 输出: ['12', '3']

匹配邮箱地址

email = "example@example.com"
email_pattern = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
if re.match(email_pattern, email):
    print("Email address is valid.")
else:
    print("Email address is invalid.")

匹配手机号

text = "我的电话是13812345678"
pattern = r"1\d{10}"
result = re.search(pattern, text)
if result:
    print(f"找到的手机号为:{result.group()}")

替换文本中的数字为星号

text = "我的密码是123456"
masked = re.sub(r'\d', '******', text)
print(masked)  # 输出: 我的密码是******

分割文本

text = "python,java;javascript,go"
languages = re.split(r'[,;]', text)
print(languages)  # 输出: ['python', 'java', 'javascript', 'go']

贪婪与非贪婪匹配

text = "Kimi is 25 years old and her phone number is 13812345678"
pattern = r'(\d{3})\d{3}-\d{4}'
match = re.search(pattern, text)
if match:
    print(f"Found a phone number: {match.group()}")

常用正则表达式模式

  • \d:匹配任意数字。

  • \w:匹配字母、数字、下划线。

  • \s:匹配空白字符(空格、制表符、换行符)。

  • .*:匹配除换行符外的任意字符。

  • ^:匹配输入字符串的开始位置。

  • $:匹配输入字符串的结束位置。

  • *:匹配前面的子表达式零次或多次。

  • +:匹配前面的子表达式一次或多次。

  • :匹配前面的子表达式零次或一次。

  • {n}:匹配确定的n次。

  • {n,}:至少匹配n次。

  • {n,m}:最少匹配n次且最多m次。

实战案例

  • 邮箱地址验证 :使用正则表达式验证邮箱格式。

  • IP地址验证 :使用正则表达式验证IP地址格式。

注意

  • 在正则表达式模式前加r表示原始字符串,可以避免转义字符造成的困扰。

希望这些示例和解释能帮助你理解Python中正则表达式的使用。

Top