正则表达式 (Regular Expressions, 简称re) 入门
正则表达式是一种用于匹配字符串模式的工具,被广泛应用于文本处理和数据提取。它通过一种紧凑的语法表达字符串的特定模式,用于搜索、替换、分割等操作。Python中的 re
模块提供了对正则表达式的支持,是文本处理的强大工具。
1. 基本概念
正则表达式由字符和元字符组成。字符代表它们自身,而元字符则具有特殊意义,用于构建复杂的模式。
- 普通字符:匹配自身,如
a
匹配字符a
。 - 元字符:具有特殊功能的字符,如
.
、*
、+
、?
、^
、$
等。
2. 常用元字符及其含义
.
:匹配任意单个字符(除换行符)。^
:匹配字符串的开始位置。$
:匹配字符串的结束位置。*
:匹配前一个字符0次或多次。+
:匹配前一个字符1次或多次。?
:匹配前一个字符0次或1次。{n}
:精确匹配n次。{n,m}
:匹配n到m次。[]
:匹配括号内的任意字符,如[abc]
匹配a
、b
或c
。|
:表示或,如a|b
表示匹配a
或b
。()
:分组,捕获子表达式。
3. 常见用法
以下是 Python 中使用 re
模块的常见操作:
匹配字符串
import re pattern = r"\d+" # 匹配一个或多个数字 text = "The year is 2023." match = re.search(pattern, text) if match: print(match.group()) # 输出 2023
re.search()
函数用于在字符串中查找匹配的第一个位置。替换字符串
text = "The price is 100 dollars." new_text = re.sub(r"\d+", "200", text) print(new_text) # 输出 "The price is 200 dollars."
re.sub()
用于替换匹配到的子字符串。分割字符串
text = "apple, orange; banana" fruits = re.split(r"[;,\s]+", text) print(fruits) # 输出 ['apple', 'orange', 'banana']
re.split()
根据正则表达式分割字符串。查找所有匹配
text = "Call 911 or 112 in emergency." numbers = re.findall(r"\d+", text) print(numbers) # 输出 ['911', '112']
re.findall()
返回字符串中所有与正则表达式匹配的部分。
4. 贪婪与懒惰匹配
正则表达式中的量词(如 *
, +
, ?
)默认是贪婪的,即它们会尽可能多地匹配字符。如果希望它们变为懒惰匹配,可以在量词后加上 ?
。
- 贪婪匹配:
.*
会尽可能多地匹配字符。 - 懒惰匹配:
.*?
会尽可能少地匹配字符。
总结
正则表达式是一种强大的文本处理工具,通过学习基本的元字符、常用方法和匹配规则,开发者可以高效处理各种字符串操作需求。掌握正则表达式的基础,将为数据处理、日志分析、Web开发等领域提供极大的帮助。