17.1 正则表达式语法:元字符、字符集、量词
Python正则表达式语法:元字符、字符集、量词详解教程
本教程详细解释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模块文档)获取更多细节。
希望本教程能帮助你入门正则表达式!如有疑问,多练习并尝试编写自己的模式。
开发工具推荐