【发布时间】:2025-12-03 14:35:01
【问题描述】:
我需要用同样长的单词列表替换单词列表。
例如,您有: "a","b","c","d","e","f"
你想用每个单词的大写版本替换每个单词: "A","B","C","D","E","F"
我知道如何使用正则表达式查找每个字符串: (a\|b\|c\|d\|e\|f)
我知道您可以对每个单词进行全局替换。但是当单词的长度变长时,这种方法会变得笨拙和不雅。
有没有办法以某种方式进行全局替换?类似于:
:%s/\(a\|b\|c\|d\|e\|f\)/INSERT_REPLACEMENT_LIST/
我不确定这是否可能。
【问题讨论】:
-
只是为了满足我的好奇心,你介意告诉我,这是干什么用的?我的意思是,在实践中它有什么好处?什么都没想到,所以我想知道。
-
@Idigas,我正在对一些糟糕的 Matlab 代码进行大量重构。我注意到代码使用了 20-30 个全局变量,而他的全局变量并非全部大写或以使它们明显全局的方式命名。 --> 所以我想将它们全部重命名为大写。或者可能是相同的名称,但在每个变量名称后添加“_g”。
-
@Idigas,最终我将在 C 中实现 Matlab。所以我想在转换为 C 之前充分理解并使代码尽可能优雅。
-
@Igor,他对问题中给出的示例给出了具体的解决方案。我在问题中给出的示例是最简单的案例场景,旨在说明我的问题。实际上,每个 a 或 b 或 c 都是一个将被另一个字符串替换的字符串。
标签: regex vim replace substitution