You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python正则表达式为单引号内字符串添加终端转义字符

为终端输出的引号内文本添加颜色转义序列的正则方案

问题描述

现有以下Python代码:

import re

string1 = "I am a test string"
string2 = "I have some 'quoted text' to display."
string3 = "I have 'some quotes' plus some more text and 'some other quotes'."

需要为所有单引号包裹的文本前后分别添加终端绿色转义序列\033[92m和重置序列\033[0m,最终得到:

result1 = "I am a test string"
result2 = "I have some '\033[92mquoted text\033[0m' to display."
result3 = "I have '\033[92msome quotes\033[0m' plus some more text and '\033[92msome other quotes\033[0m'."

请问该使用何种正则模式?re.sub是否为合适的方法,或是有更好的正则函数?

解决方案

方法选择

re.sub是完全合适的方法,它支持正则表达式的匹配与批量替换,正好契合批量处理字符串中所有单引号包裹内容的需求,没有比它更适配的正则函数。

正则模式与替换逻辑

使用的正则模式为:r"'(.*?)'"

  • ':匹配开头的单引号
  • (.*?):非贪婪捕获组,匹配单引号之间的任意文本(非贪婪模式避免跨多个单引号匹配,确保仅处理一对单引号内的内容)
  • ':匹配结尾的单引号

替换模板为:r"'\033[92m\1\033[0m'"

  • \1:引用捕获组中匹配到的引号内文本
  • 前后分别拼接绿色转义序列和重置序列,实现终端输出时的颜色高亮效果

完整代码示例

import re

# 原始字符串
string1 = "I am a test string"
string2 = "I have some 'quoted text' to display."
string3 = "I have 'some quotes' plus some more text and 'some other quotes'."

# 定义正则模式和替换模板
pattern = r"'(.*?)'"
replace_template = r"'\033[92m\1\033[0m'"

# 处理字符串
result1 = re.sub(pattern, replace_template, string1)
result2 = re.sub(pattern, replace_template, string2)
result3 = re.sub(pattern, replace_template, string3)

# 输出结果(终端中引号内文本会显示为绿色)
print(result1)
print(result2)
print(result3)

补充说明

如果字符串中存在嵌套单引号(比如'it\'s a test'),上述模式会失效,此时可将正则调整为r"'([^']*)'"——用排除法匹配单引号内的内容(匹配除单引号外的所有字符),避免嵌套单引号干扰匹配逻辑。

内容的提问来源于stack exchange,提问作者SandPiper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:20:26