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

NodeJS中如何实现文本文件特定位置可变内容的写入替换

NodeJS 实现两段固定文本间的内容替换

实现思路

  • 基于正则表达式的匹配规则,捕获两段固定文本中间的所有内容完成替换
  • 对固定文本做正则特殊字符转义,避免固定文本包含.、*、$等正则保留字符时匹配失效
  • 兼容跨多行的中间内容匹配场景

完整实现代码

首先定义正则特殊字符转义工具函数:

function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

完整的文件读写+替换逻辑:

const fs = require('fs/promises');

/**
 * 替换两段固定文本中间的内容
 * @param {string} startStr 起始固定文本
 * @param {string} endStr 结束固定文本
 * @param {string} replaceStr 要替换成的新内容
 * @param {string} filePath 目标文件路径
 */
async function replaceBetween(startStr, endStr, replaceStr, filePath) {
  try {
    // 读取原文件内容
    const originContent = await fs.readFile(filePath, 'utf8');

    const escapedStart = escapeRegExp(startStr);
    const escapedEnd = escapeRegExp(endStr);
    // 构造匹配规则,g修饰符代表匹配所有符合条件的片段,去掉则只替换第一个
    const matchReg = new RegExp(`(${escapedStart})[\\s\\S]*?(${escapedEnd})`, 'g');

    // 执行替换,$1代表匹配到的起始固定文本,$2代表匹配到的结束固定文本
    const newContent = originContent.replace(matchReg, `$1\n${replaceStr}\n$2`);

    // 内容写回文件
    await fs.writeFile(filePath, newContent, 'utf8');
  } catch (error) {
    console.error('处理失败:', error);
  }
}

// 调用示例
replaceBetween(
  'lorem ipsum',
  'even more lorem ipsum',
  'more lorem ipsum',
  './你的目标文件.txt'
);

注意事项

  • 替换模板中的\n是为了适配换行格式,如果你不需要首尾换行可以直接删除,替换模板改为$1${replaceStr}$2即可
  • NodeJS 10及以上版本也可以用s修饰符让.匹配换行符,正则写法可简化为new RegExp((${escapedStart}).*?(${escapedEnd}), 'gs'),效果一致
  • 如果仅需要替换第一组匹配到的内容,去掉正则的g修饰符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:02