记事本++:将查找查询替换为列表中的字词



我想替换所有"var_">

var_
   Hello
var_
   Whats
var_
   Up?
...

使用此列表中的单词

alpha
beta
gamma
...

所以最终结果是

alpha
   Hello
beta
   Whats
gamma
   Up?
...

将不胜感激,以帮助实现这一目标!

这对于正则表达式来说是不可能的/过于复杂。但是,如果您将其与编程语言结合使用,则可以快速完成它。例如,在python中,它看起来像这样:

import sys
import re
import fileinput
if len(sys.argv) < 3:
  exit("Usage: " + sys.argv[0] + " <filename> <replacements>")
input_file = sys.argv[1]
replacements = sys.argv[2:]
num_of_replacements = len(replacements)
replacement_index = 0
searcher = re.compile("^var_\b")
for line in fileinput.input(input_file, inplace=True, backup='.bak'):
  match = searcher.match(line)
  if match is None:
    print(line.rstrip())
  else:
    print(re.sub("^var_\b", line.rstrip(), replacements[replacement_index]))
    replacement_index = replacement_index + 1

用法:replacer.py ExampleInput.txt alpha beta gamma

更新

可以修改程序以接受您搜索的字符串作为第一个参数:

replacer.py "var_" ExampleInput.txt alpha beta gamma

修改后的 python 脚本如下所示:

import sys
import re
import fileinput
if len(sys.argv) < 4:
  exit("Usage: " + sys.argv[0] + " <pattern> <filename> <replacements>")
search = "\b" + sys.argv[1] + "\b"
input_file = sys.argv[2]
replacements = sys.argv[3:]
num_of_replacements = len(replacements)
replacement_index = 0
searcher = re.compile(search)
for line in fileinput.input(input_file, inplace=True, backup='.bak'):
  match = searcher.match(line)
  if match is None:
    print(line.rstrip())
  else:
    print(re.sub(search, line.rstrip(), replacements[replacement_index]))
    replacement_index = replacement_index + 1

注意:此脚本仍有一些限制:

  • 它期望您搜索的字符串每行只出现一次。
  • 仅当搜索到的字符串是不同的单词时,它才会替换搜索的字符串
  • 您可能会意外地将任何 Python 正则表达式语法合并到search参数中

最新更新