Python 正则替换 re.sub
【摘要】 re.sub 是 Python 正则表达式模块(re) 中的一个函数,用于 替换字符串中匹配正则表达式的部分。它的全称是 “Regular Expression Substitute”(正则表达式替换)。 re.sub 的基本语法re.sub(pattern, replacement, string, count=0, flags=0)pattern:要匹配的正则表达式(字符串或编译后的正则...
re.sub
是 Python 正则表达式模块(re
) 中的一个函数,用于 替换字符串中匹配正则表达式的部分。它的全称是 “Regular Expression Substitute”(正则表达式替换)。
re.sub
的基本语法
re.sub(pattern, replacement, string, count=0, flags=0)
pattern
:要匹配的正则表达式(字符串或编译后的正则对象)。replacement
:替换成的字符串(可以是函数)。string
:要处理的原始字符串。count
(可选):最多替换次数(默认0
表示全部替换)。flags
(可选):正则标志(如re.IGNORECASE
)。
re.sub
的作用
- 查找并替换:找到字符串中所有匹配
pattern
的部分,替换为replacement
。 - 支持正则表达式:可以用复杂的正则规则匹配(如
\d+
匹配数字,\s+
匹配空白字符等)。 - 全局替换:默认替换所有匹配项(除非指定
count
)。
示例
1. 简单替换
import re
text = "Hello, 2023! Python is great."
# 将所有数字替换为 "YEAR"
result = re.sub(r"\d+", "YEAR", text)
print(result) # 输出: "Hello, YEAR! Python is great."
2. 替换换行符(\r\n
或 \n
)
text = "Line1\r\nLine2\nLine3"
# 替换所有 Windows (\r\n) 和 Unix (\n) 换行符为 <br>
result = re.sub(r"\r?\n", "<br>", text)
print(result) # 输出: "Line1<br>Line2<br>Line3"
3. 使用函数动态替换
def to_upper(match):
return match.group(0).upper()
text = "hello world"
# 将所有单词首字母大写
result = re.sub(r"\b\w", to_upper, text)
print(result) # 输出: "Hello World"
re.sub
vs str.replace
特性 | re.sub |
str.replace |
---|---|---|
替换方式 | 支持正则表达式 | 仅支持固定字符串 |
性能 | 稍慢(需编译正则) | 更快(直接字符串操作) |
灵活性 | 高(可匹配复杂模式) | 低(只能精确匹配) |
适用场景 | 需要模式匹配时(如换行符) | 简单固定字符串替换 |
为什么在 Markdown 表格换行处理中推荐 re.sub
?
在处理换行符时:
\r\n
(Windows)和\n
(Unix)是不同的,用str.replace
需要写两次:text = text.replace("\r\n", "<br>").replace("\n", "<br>")
- 用
re.sub
可以 一步完成:import re text = re.sub(r"\r?\n", "<br>", text)
\r?
表示“\r
是可选的”,因此能匹配\r\n
或\n
。
总结
re.sub
是正则替换工具,适合复杂匹配(如换行符、数字、特定模式)。str.replace
是简单字符串替换,适合固定文本。- 在 Pandas 中,可以用
str.replace(regex=True)
替代re.sub
(但底层仍是正则)。
如果你只需要处理换行符,re.sub(r"\r?\n", "<br>", text)
是最简洁高效的方式!
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)