【问题标题】:search and incremental replace搜索和增量替换
【发布时间】:2015-12-16 08:24:04
【问题描述】:

我有一些文字。我正在尝试将 [] 中的数字替换为从 1 开始的数字,然后以增量方式替换。这是否可以使用 notepad++ 中的正则表达式搜索和替换功能。

pig[1]
chicken[2]
monkey[3]
duck[7]
goat[4]
buffalo[5]

输出>>

pig[1]
chicken[2]
monkey[3]
duck[4]
goat[5]
buffalo[6]

【问题讨论】:

  • 各位大佬能告诉我负分的原因吗?如果没有正当理由,请删除负面标记
  • @DeanTaylor:这不是真正的重复,因为要替换的数字不在同一列上。
  • 不知道notepad++,但是你可以在命令行上轻松解决,例如使用这行 powershell:$counter = 0; get-content .\input.txt | %{ $counter += 1; $_.Split('[')[0] + "[$counter]"; }

标签: regex notepad++


【解决方案1】:

您可以分两步完成这项工作:

  1. 第一步
    • 将光标移动到第一行的开头
    • 选择,在编辑菜单中,以列模式编辑(我不确定标签,因为我没有英文版)你可以输入 Alt+C
    • 在弹出窗口中,选择初始数字和增量,然后单击确定
  2. 第二步:
    • Ctrl+H
    • 查找内容:(\d+)(.+?)\[\d+\]
    • 替换为:$2[$1]
    • 然后点击全部替换

正则表达式解释:

(       : Start group 1
  \d+   : 1 or more digits
)       : End group 1
(       : Start group 2
  .+?   : 1 or more any character except linebreak non greedy
)       : End group 2
\[\d+\] : 1 or more digits enclosed in brackets

替换零件:

$2      : Content of group 2 (ie. word before the opening braket: pig, chicken, ...)
[$1]    : Content of group 1 (ie. the number generated in step 1), enclosed in brackets

【讨论】:

  • 非常感谢您的回复。请您解释一下您使用的正则表达式,我的意思是它是如何工作的。 (\d+)(.+?)\[\d+\]$2[$1]。谢谢!!!
猜你喜欢
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 2016-12-15
  • 2020-07-20
  • 1970-01-01
相关资源
最近更新 更多