技术求助:如何将文档中首尾@分别替换为{{和}}?
嘿,我完全懂你遇到的困扰——要把文档里每段的第一个@换成{{、第二个@换成}}对吧?其实用正则表达式或者简单的脚本就能搞定,我给你几个不同场景下的可行方案:
文本编辑器方案(VS Code/Sublime/Notepad++通用)
大多数现代文本编辑器都支持正则替换,这是最快的处理方式:
- 打开替换面板(VS Code按
Ctrl+H,Sublime按Ctrl+Shift+H) - 勾选「正则表达式」选项(一般是个
.*的图标) - 在「查找」框输入:
^([^@]*)(@)([^@]*)(@) - 在「替换」框输入:
$1{{$3}} - 点击「替换全部」
这个正则的逻辑是:匹配每段开头到第一个@的内容、第一个@、两个@之间的内容、第二个@,然后把第一个@换成{{,第二个@换成}},其余内容原封不动保留。如果某段里@的数量少于2,会自动跳过不修改。
命令行方案(Linux/macOS用sed)
如果你习惯用命令行批量处理文件,可以用sed命令:
sed -E 's/^([^@]*)(@)([^@]*)(@)/\1{{\3}}/' your_input_file.txt > your_output_file.txt
-E参数启用扩展正则语法,确保匹配逻辑和编辑器里一致。执行后会生成一个修改好的新文件,原文件不会被改动。
Python脚本方案(适合复杂场景或批量处理)
如果需要更灵活的控制(比如处理编码特殊的文件、批量修改多个文件),可以写个简单的Python脚本:
# 替换每段的前两个@为{{和}} with open("input.txt", "r", encoding="utf-8") as input_file: lines = input_file.readlines() modified_content = [] for line in lines: # 把行按@分割成最多3部分:第一个@前、中间内容、第二个@后 split_parts = line.split("@", 2) if len(split_parts) >= 3: # 拼接成替换后的格式 new_line = f"{{{{{split_parts[1]}}}}}{split_parts[2]}" modified_content.append(new_line) else: # 不足两个@的行,直接保留原内容 modified_content.append(line) # 写入新文件 with open("output.txt", "w", encoding="utf-8") as output_file: output_file.writelines(modified_content)
把上面的代码保存为replace_at.py,把要处理的文件命名为input.txt,运行脚本后就会生成修改好的output.txt。
内容的提问来源于stack exchange,提问作者Davy Wessels
相关产品推荐
相关产品推荐

