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

如何用Regex修改文本中每10行的最后一个字符为分号?

解决方案:用正则批量替换每第10行的最后一个字符为分号

核心正则与替换规则

要实现每10行的最后一行末尾字符替换为分号,需使用多行模式(m)和全局模式(g),具体规则如下:

  • 匹配正则:((?:.*\r?\n){9}.*)(.)$
  • 替换内容:$1;

正则逻辑说明

  • (?:.*\r?\n){9}:非捕获组,精准匹配连续9行的完整内容(\r?\n兼容Windows/Unix换行格式),非捕获组避免额外分组干扰替换逻辑。
  • .*:匹配第10行除最后一个字符外的所有内容,与前面9行共同组成第一个捕获组$1。
  • (.)$:捕获第10行的最后一个字符($在多行模式下匹配单行行尾),作为第二个捕获组。
  • 替换时用$1;,直接保留前9行+第10行的主体内容,将最后一个字符替换为分号。

工具设置注意事项

在VS Code、Notepad++等支持正则替换的工具中:

  1. 切换到正则替换模式。
  2. 开启全局替换(确保所有符合条件的行都被处理)。
  3. 开启多行模式(Notepad++勾选「匹配换行符」;VS Code可在正则后追加m flag,即((?:.*\r?\n){9}.*)(.)$m)。

示例验证(每2行替换一次)

调整正则为((?:.*\r?\n){1}.*)(.)$,替换内容仍为$1;:
原文本:

line1'
line2{
line3+
line4´

替换后:

line1'
line2;
line3+
line4;

原正则优化说明

你写的^(.*\r?\n){9}(.*)(.)$存在两处可优化点:

  1. 多余的^行首匹配:在多行模式下会限制匹配起始位置,无需额外添加。
  2. 分组冗余:原正则分3个组,替换时需写$1$2;,不如优化后的双分组简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:52:50