Python 教程

17.1 正则表达式语法:元字符、字符集、量词

Python正则表达式语法:元字符、字符集、量词详解教程

Python 教程

本教程详细解释Python正则表达式的元字符、字符集和量词,提供简单易懂的示例代码,帮助初学者快速掌握正则表达式基础语法。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

Python正则表达式语法:元字符、字符集、量词

正则表达式(Regular Expression,简称regex)是处理文本的强大工具,在Python中通过re模块实现。它常用于字符串搜索、匹配和替换,是编程和数据处理的基础技能。本教程面向新人,将以简单易懂的方式介绍正则表达式的三个核心部分:元字符、字符集和量词。

1. 元字符

元字符是正则表达式中具有特殊功能的字符。以下是常见元字符及其作用:

  • .:匹配除换行符外的任意单个字符。
  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • *:匹配前一个字符零次或多次。
  • +:匹配前一个字符一次或多次。
  • ?:匹配前一个字符零次或一次。
  • {}:指定匹配次数,如{n}匹配n次,{n,}匹配至少n次,{n,m}匹配n到m次。
  • []:定义字符集,匹配括号内的任意一个字符。
  • \:转义字符,用于匹配元字符本身,例如\.匹配点号。
  • |:或运算符,匹配左侧或右侧的模式。
  • ():分组,将模式组合,便于引用或应用量词。

示例代码:

import re

# 使用 . 匹配任意字符
pattern = r'h.llo'  # 匹配 h, 任意字符, llo
text = 'hello world'
match = re.search(pattern, text)
if match:
    print(match.group())  # 输出: hello

# 使用 ^ 和 $ 匹配完整字符串
pattern = r'^Hello$'
text = 'Hello'
match = re.match(pattern, text)
if match:
    print(match.group())  # 输出: Hello

2. 字符集

字符集用方括号 [] 表示,匹配括号内任意一个字符。常用形式:

  • [abc]:匹配 a、b 或 c。
  • [a-z]:匹配任意小写字母。
  • [A-Z]:匹配任意大写字母。
  • [0-9]:匹配任意数字。
  • [^abc]:否定字符集,匹配除 a、b、c 外的任意字符。

示例代码:

import re

# 匹配数字或小写字母
pattern = r'[0-9a-z]'
text = 'abc123'
matches = re.findall(pattern, text)
print(matches)  # 输出: ['a', 'b', 'c', '1', '2', '3']

# 否定字符集示例
pattern = r'[^aeiou]'  # 匹配非元音字母
text = 'hello'
matches = re.findall(pattern, text)
print(matches)  # 输出: ['h', 'l', 'l']

3. 量词

量词用于指定前一个字符或组的匹配次数。常见量词:

  • *:零次或多次。
  • +:一次或多次。
  • ?:零次或一次。
  • {n}:恰好 n 次。
  • {n,}:至少 n 次。
  • {n,m}:n 到 m 次。

示例代码:

import re

# 使用 * 匹配零次或多次
pattern = r'go*gle'  # 匹配 g, o 零次或多次, gle
text = 'ggle google gooogle'
matches = re.findall(pattern, text)
print(matches)  # 输出: ['ggle', 'google', 'gooogle']

# 使用 { } 指定次数
pattern = r'a{2,4}'  # 匹配2到4个连续的a
text = 'aaa aaaa aaaaa'
matches = re.findall(pattern, text)
print(matches)  # 输出: ['aaa', 'aaaa', 'aaaa']

总结

掌握元字符、字符集和量词是学习正则表达式的基础。通过组合这些元素,你可以构建复杂的模式来处理各种文本任务。在Python中,使用re模块的search()match()findall()等函数可以轻松应用这些规则。

下一步学习建议:

  • 实践更多示例,加深理解。
  • 学习分组和引用,如使用()和反向引用。
  • 探索贪婪匹配与非贪婪匹配(例如在量词后加?)。
  • 参考Python官方文档(re模块文档)获取更多细节。

希望本教程能帮助你入门正则表达式!如有疑问,多练习并尝试编写自己的模式。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包