You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python中如何在双引号之间添加文本?正则表达式实现求助

解决双引号内插入指定字符串的正则方案

别担心,正则处理这类双引号内的字符串插入需求其实挺简单的,我来一步步给你讲清楚怎么实现,还会覆盖常见场景和特殊情况~

核心思路

我们的目标是:精准匹配双引号包裹的内容,保留原有内容的同时,拼接上你要添加的指定字符串。核心是用「捕获组」把引号内的内容抓出来,替换时再组合回去。

基础场景:引号内无转义双引号

如果你的字符串里没有转义的双引号(比如没有\"这种写法),用最简单的正则就能搞定。

假设我们要添加的指定字符串是 PREFIX_,原有文本是 "apple" "banana" "cherry"

1. 在引号内内容的前面插入指定字符串

正则匹配式:"([^"]*)"

  • ":匹配开头的双引号
  • ([^"]*):捕获组,匹配除了双引号之外的所有字符(也就是引号内的内容)
  • ":匹配结尾的双引号

替换式:"PREFIX_$1"(不同工具/语言里,捕获组的引用符号可能是$1\1,下面会分语言举例)

代码示例

JavaScript
const originalStr = `"apple" "banana" "cherry"`;
const addStr = "PREFIX_";
const result = originalStr.replace(/"([^"]*)"/g, `"${addStr}$1"`);
console.log(result); // 输出:"PREFIX_apple" "PREFIX_banana" "PREFIX_cherry"
Python
import re

original_str = '"apple" "banana" "cherry"'
add_str = "PREFIX_"
result = re.sub(r'"([^"]*)"', f'"{add_str}\\1"', original_str)
print(result)

2. 在引号内内容的后面插入指定字符串

只需要调整替换式即可,把指定字符串放在捕获组内容的后面:

替换式:"$1SUFFIX_"

代码示例(JavaScript)

const result = originalStr.replace(/"([^"]*)"/g, `"$1SUFFIX_"`);
console.log(result); // 输出:"appleSUFFIX_" "bananaSUFFIX_" "cherrySUFFIX_"

进阶场景:引号内有转义双引号

如果你的字符串里包含转义的双引号(比如"He said \"Hello!\""),上面的正则会失效,因为[^"]*会在遇到转义前的"就停止匹配。这时候需要用更健壮的正则:

正则匹配式:"((?:\\.|[^"\\])*)"

  • (?:\\.|[^"\\])*:非捕获组,匹配「转义字符(比如\")」或者「非引号、非转义符的普通字符」,这样就能正确处理带转义的引号了。

代码示例(JavaScript)

const originalStr = `"He said \\"Hello!\\"" "Test string"`;
const addStr = "NOTE: ";
const result = originalStr.replace(/"((?:\\.|[^"\\])*)"/g, `"${addStr}$1"`);
console.log(result); // 输出:"NOTE: He said \"Hello!\"" "NOTE: Test string"

文本编辑器里的快速替换

如果是用VS Code、Sublime、Notepad++这类编辑器做批量替换:

  1. 打开查找替换面板(通常是Ctrl+H/Cmd+H
  2. 勾选「正则表达式」选项
  3. 查找框输入:"([^"]*)"(或进阶版的"((?:\\.|[^"\\])*)"
  4. 替换框输入:"你的指定字符串$1"(Notepad++用"你的指定字符串\1"

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

火山引擎 最新活动