Python 正则表达式语法详解:新手友好版

编程狮(w3cschool.cn) 2025-05-28 14:31:48 浏览数 (22)
反馈

在处理文本数据时,正则表达式是一种功能强大的工具。Pythonre 模块提供了丰富的正则表达式功能,可以帮助我们高效地进行文本匹配、搜索、替换和提取数据。本文将通过简单的示例,深入浅出地讲解 Python 正则表达式的语法和常见用法。

正则表达式基础

正则表达式(Regular Expression,简称 regex)是一个特殊的字符序列,用于定义文本搜索模式。它可以帮助我们在文本中查找、匹配、替换和分割特定的字符或字符串。

常用元字符

正则表达式中包含一些具有特殊含义的元字符:

  • . :匹配任意字符(换行符除外)
  • ^ :匹配字符串开头
  • $ :匹配字符串结尾
  • * :匹配前面的字符出现 0 次或多次
  • + :匹配前面的字符出现 1 次或多次
  • ? :匹配前面的字符出现 0 次或 1 次
  • {n} :匹配前面的字符出现 n 次
  • {n, m} :匹配前面的字符出现至少 n 次但不超过 m 次
  • [] :匹配括号内指定的任意字符
  • [a-z] :匹配指定范围内的任意字符(如 a 到 z)
  • \d :匹配任意数字(等同于 [0-9])
  • \s :匹配任意空白字符(如空格、制表符、换行符)
  • \w :匹配任意字母或数字(等同于 [a-zA-Z0-9_])

Python re 模块常用方法

1. re.match() 方法

re.match() 方法用于检查字符串开头是否匹配给定的模式。如果匹配成功,返回一个匹配对象;否则返回 None

示例:检查字符串是否以特定模式开头

import re


pattern = '^a...s$'  # 匹配以 'a' 开头,后面跟任意三个字符,再以 's' 结尾
test_string = 'abyss'  # 编程狮示例字符串
result = re.match(pattern, test_string)


if result:
    print("搜索成功。")
else:
    print("搜索失败。")

输出:

搜索成功。

2. re.findall() 方法

re.findall() 方法用于在字符串中提取所有匹配模式的子串,并返回一个列表。

示例:提取字符串中的所有数字

import re


string = '你好 12 世界 89。W3Cschool 编程狮 34'
pattern = '\d+'  # 匹配一个或多个数字
result = re.findall(pattern, string)
print("字符串中的数字:", result)

输出:

字符串中的数字: ['12', '89', '34']

3. re.search() 方法

re.search() 方法用于在字符串中查找第一个匹配模式的部分。如果找到,返回一个匹配对象;否则返回 None

示例:检查字符串中是否包含特定模式

import re


string = "Python 是有趣的编程语言"
match = re.search('Python', string)  # 搜索框中带有 Python 关键词的文本内容


if match:
    print("字符串中找到匹配的模式。")
else:
    print("字符串中未找到匹配的模式。")

输出:

字符串中找到匹配的模式。

4. re.sub()re.subn() 方法

re.sub() 方法用于替换字符串中匹配模式的部分,返回替换后的字符串。re.subn() 方法则返回一个元组,包含替换后的字符串和替换的次数。

示例:移除字符串中的所有空白字符

import re


string = 'abc 12\ de 23 \n f45 6'
pattern = '\s+'  # 匹配一个或多个空白字符
replace = ''
new_string = re.sub(pattern, replace, string)
print(new_string)

输出:

abc12de23f456

5. re.split() 方法

re.split() 方法用于按照匹配模式分割字符串,并返回一个列表。

示例:按照数字分割字符串

import re


string = 'Twelve:12 Eighty nine:89.'
pattern = '\d+'  # 匹配一个或多个数字
result = re.split(pattern, string)
print(result)

输出:

['Twelve:', ' Eighty nine:', '.']

正则表达式进阶技巧

1. 使用修饰符

修饰符可以改变正则表达式的匹配行为。常见的修饰符包括:

  • re.IGNORECASE:忽略大小写
  • re.MULTILINE:多行模式
  • re.DOTALL. 匹配包括换行符在内的所有字符

示例:忽略大小写的匹配

import re


string = 'Hello W3Cschool'
pattern = 'hello'
match = re.search(pattern, string, re.IGNORECASE)  # 匹配时忽略大小写


if match:
    print("忽略大小写匹配成功。")
else:
    print("匹配失败。")

输出:

忽略大小写匹配成功。

2. 使用分组

通过在正则表达式中使用括号 (),可以对匹配的部分进行分组,方便提取特定数据。

示例:提取日期中的年、月、日

import re


date_string = '2025-05-28'
pattern = '(\d{4})-(\d{2})-(\d{2})'  # 分组提取年、月、日
match = re.match(pattern, date_string)


if match:
    year, month, day = match.groups()
    print(f"年份:{year},月份:{month},日期:{day}")
else:
    print("日期格式不正确。")

输出:

年份:2025,月份:05,日期:28

编程狮课程推荐

如果你想更系统地学习 Python 编程和正则表达式,欢迎访问 Python零基础到高薪就业。我们提供了以下相关课程:

  • Python 基础入门:从零开始学习 Python 编程,掌握基本语法和数据结构。
  • Python 数据处理与分析:学习如何使用 Python 进行数据处理,重点讲解正则表达式的应用。
  • Python Web 开发实战:基于 Django 或 Flask 框架的 Web 开发课程,实际项目中运用正则表达式。

在编程狮,我们致力于为每一位学习者提供高质量的编程教育资源,帮助你实现从入门到精通的飞跃!

总结

通过本文的讲解,你已经掌握了 Python 正则表达式的基本语法和常用方法。正则表达式是文本处理的强大工具,熟练掌握它将使你在数据处理、文本分析和 Web 开发等领域能够更加高效地工作。

希望你能够通过实践不断巩固所学知识,并将其应用到实际项目中。如果你在学习过程中遇到任何问题,欢迎访问编程狮社区寻求帮助。编程狮将始终陪伴你成长,助力你成为优秀的 Python 开发者!

0 人点赞