# 编辑文本时如何同时匹配多个关键字并进行替换？

**URL:** <https://meta.appinn.net/t/topic/30600>\
**Category:** 问题求助\
**Tags:** 文本处理\
**Created:** [2022 年3 月 5 日 08:04 UTC](https://meta.appinn.net/t/topic/30600 "2022-03-05T08:04:57Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 08:04 UTC](https://meta.appinn.net/t/topic/30600/1 "2022-03-05T08:04:57Z")

</div>

近期在编辑txt文本，里面有些人名要进行替换变更，因为角色众多逐个替换觉得工作量比较大，咨询一下各位有没有Notepad++高手，或者其他曲线救国的方式提供一下，谢谢哈

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 08:06 UTC](https://meta.appinn.net/t/topic/30600/2 "2022-03-05T08:06:16Z")

</div>

补充一下，例如文本中有名字是张三和李四，同时查找替换为张三变成张四 李三改为李四 这样同时变动

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2022 年3 月 5 日 09:11 UTC](https://meta.appinn.net/t/topic/30600/3 "2022-03-05T09:11:35Z")

</div>

推荐这个编辑器，有这个功能

> **[Siphonink 虹吸墨 - 适合普通人的文本编辑器\[Win\] - 小众软件](https://www.appinn.com/siphonink-for-windows/)**
>
> Siphonink 虹吸墨 是一款文本编辑器，强化对文本的操作，任何人都能直观的处理复杂文本（合并、分割、拆分、批量替换），简单易用，单文件免安装，多种配色方案。@Appinn

[http://nullice.com/Gasoft/Siphonink/Help/fmap.html#\_批量替换](http://nullice.com/Gasoft/Siphonink/Help/fmap.html#_%E6%89%B9%E9%87%8F%E6%9B%BF%E6%8D%A2)

---

<div class="post-metadata">

作者： ![shadows](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/shadows/32/17001_2.png) [@shadows](https://meta.appinn.net/u/shadows)\
发布日期： [2022 年3 月 5 日 09:14 UTC](https://meta.appinn.net/t/topic/30600/4 "2022-03-05T09:14:33Z")

</div>

通过你举的例子，是否同时替换是不重要的，因为它们本来就不会互相干扰。  
多次替换即可

---

<div class="post-metadata">

作者： ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)\
发布日期： [2022 年3 月 5 日 09:27 UTC](https://meta.appinn.net/t/topic/30600/5 "2022-03-05T09:27:37Z")

</div>

根据你的需求，手搓一个小工具，正版易语言编写，如被360等误报，自行决定是否使用。

 ![image](https://meta.appinn.net/uploads/default/original/3X/b/6/b61a49e8a369102eb3eb8bfb78b04af78a92c16b.png)

链接: [https://pan.baidu.com/s/1GNIKNBhMXcaaDXZbKclj-Q?pwd=m86i](https://pan.baidu.com/s/1GNIKNBhMXcaaDXZbKclj-Q?pwd=m86i) 提取码: m86i

用10M大小的文本文件测试，处理速度大概是（1）秒级的，更大的没试。

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 09:27 UTC](https://meta.appinn.net/t/topic/30600/6 "2022-03-05T09:27:40Z")

</div>

多次替换确实可以，但是我的目的就是要懒嘛，哈哈哈

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 09:34 UTC](https://meta.appinn.net/t/topic/30600/7 "2022-03-05T09:34:29Z")

</div>

![image](https://meta.appinn.net/uploads/default/original/3X/4/0/40c35a88bf4d2077d14e33e92cc8ad92c7cf1e8c.png)  
按了开始替换后在重新打开 文本，里面的内容完全没有改变，我是不是操作错误了？

---

<div class="post-metadata">

作者： ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)\
发布日期： [2022 年3 月 5 日 09:35 UTC](https://meta.appinn.net/t/topic/30600/8 "2022-03-05T09:35:10Z")

</div>

惭愧，忘了关调试模式了。我改一下，抱歉。  
链接: [https://pan.baidu.com/s/1GNIKNBhMXcaaDXZbKclj-Q?pwd=m86i](https://pan.baidu.com/s/1GNIKNBhMXcaaDXZbKclj-Q?pwd=m86i)

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 09:44 UTC](https://meta.appinn.net/t/topic/30600/9 "2022-03-05T09:44:16Z")

</div>

实在太感谢你百忙抽空写个软件，不知道可否让我提取一些建议

 ![image](https://meta.appinn.net/uploads/default/original/3X/8/6/86ed1b700a047d95e2fd91242140f8850eb7f96e.png)  
实测，已经能够处理到情况了，到时有些小建议，能否添加个模糊匹配和全匹配，像啊啊啊这个文本，按实际应用的话应该不改，当然，只是建议，请收下我的膝盖

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 5 日 09:49 UTC](https://meta.appinn.net/t/topic/30600/10 "2022-03-05T09:49:06Z")

</div>

谢谢你的推荐，已经有高人写了软件再次感谢你的回复

---

<div class="post-metadata">

作者： ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)\
发布日期： [2022 年3 月 5 日 09:51 UTC](https://meta.appinn.net/t/topic/30600/11 "2022-03-05T09:51:08Z")

</div>

> [@dom1014](#):
>
> 模糊匹配

这种文本替换中的模糊匹配，说起来貌似简单，其实是非常非常难以做到的。因为需要“模糊”的场景太多了，太复杂了。您举得例子比较简单，看我举个例子：  
这样一段文本“张三笑呵呵一笑，轻而易举的把张三推开一边”。这里一个人叫“张三笑”，一个人叫“张三”，现在要替换“张三”的话，那么除了人工判读，目前还没有代码可以做到跳过“张三笑”。什么AI都不行。

---

<div class="post-metadata">

作者： ![shadows](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/shadows/32/17001_2.png) [@shadows](https://meta.appinn.net/u/shadows)\
发布日期： [2022 年3 月 5 日 10:59 UTC](https://meta.appinn.net/t/topic/30600/12 "2022-03-05T10:59:28Z")

</div>

支持正则表达式就好多了吧

---

<div class="post-metadata">

作者： ![dangerace](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dangerace/32/16676_2.png) [@dangerace](https://meta.appinn.net/u/dangerace)\
发布日期： [2022 年3 月 5 日 11:09 UTC](https://meta.appinn.net/t/topic/30600/13 "2022-03-05T11:09:27Z")

</div>

也不行的，正则并不能代替人脑，判断出“张三笑”并不是“张三”笑

---

<div class="post-metadata">

作者： ![bcaso](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/bcaso/32/20852_2.png) [@bcaso](https://meta.appinn.net/u/bcaso)\
发布日期： [2022 年3 月 5 日 11:18 UTC](https://meta.appinn.net/t/topic/30600/14 "2022-03-05T11:18:08Z")

</div>

通过 vim 的文本正则替换

给出文本：

```auto
a b c d

```

目标： 将所有的 a 或 b 都替换为 e

vim 替换命令：

```auto
:%s/a\|b/e/g

```

先说下匹配多个关键词，如匹配 a 或 b，对应的就是 `a|b`，在 vim 中，要对 `|` 做转义，所以替换目标要使用 `a\|b`

要对整个文件中的某个关键词做替换，要使用 `:%s`，所以是 `:%s/a\|\b/e`，但是这个只替换一次。要替换所有，在最后加上 `/g`

最后的命令是 `:%s/a\|b/e/g`

替换后的文本：

```auto
e e c d

```

> [@dom1014](#):
>
> 大佬你这个是不是 linux 系统的命令

![Animation2](https://meta.appinn.net/uploads/default/original/3X/0/6/0695f34c123ee8d3d8ffd06397cf54fb397eefbf.gif)

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 6 日 01:33 UTC](https://meta.appinn.net/t/topic/30600/15 "2022-03-06T01:33:03Z")

</div>

> [@bcaso](#):
>
> vim

大佬你这个是不是 linux 系统的命令，我是windows鸭

---

<div class="post-metadata">

作者： ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)\
发布日期： [2022 年3 月 6 日 01:35 UTC](https://meta.appinn.net/t/topic/30600/16 "2022-03-06T01:35:38Z")

</div>

> [@dom1014](#):
>
> 我是windows鸭

windows 也可以装的

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 7 日 00:22 UTC](https://meta.appinn.net/t/topic/30600/17 "2022-03-07T00:22:49Z")

</div>

什么软件可以可以运行这个命令？

---

<div class="post-metadata">

作者： ![egaokiss](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/e/cc9497/32.png) [@egaokiss](https://meta.appinn.net/u/egaokiss)\
发布日期： [2022 年3 月 7 日 00:35 UTC](https://meta.appinn.net/t/topic/30600/18 "2022-03-07T00:35:40Z")

</div>

看你那么久还没找到解决方案，你可以试试去52PJ看看，小说角色更名器 V1.1.3，介绍地址 [https://www.52pojie.cn/thread-1577454-1-1.html](https://www.52pojie.cn/thread-1577454-1-1.html)  
下载地址：[https://wwx.lanzoux.com/b01hxwx9g](https://wwx.lanzoux.com/b01hxwx9g) 密码:gcf2

纯回复，没有其他的宣传意思。

---

<div class="post-metadata">

作者： ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)\
发布日期： [2022 年3 月 7 日 00:49 UTC](https://meta.appinn.net/t/topic/30600/19 "2022-03-07T00:49:15Z")

</div>

> [@dom1014](#):
>
> 什么软件可以可以运行这个命令？

这个软件就叫 [Vim](https://www.vim.org/)，但我估计能这样问的话，大概这个方向探索起来难度有点大。

用 JS 我倒是可以给你写个脚本，但如果文件比较大，肯定还是用 Node.js 比较好，，这又涉及到安装环境了。

以及就像 [#11](https://meta.appinn.net/t/topic/30600/11) 所说，模糊匹配可能遇到的问题太复杂了。所以，基本也就这样了。或者自己开发……

> [@egaokiss](#):
>
> 纯回复，没有其他的宣传意思。

没事儿，大可放心，只要不是重复刷一类内容的，一般我们都不介意。

但问题还是 #11 中讲到的问题，目前基本无解。

---

<div class="post-metadata">

作者： ![dom1014](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/d/91b2a8/32.png) [@dom1014](https://meta.appinn.net/u/dom1014)\
发布日期： [2022 年3 月 8 日 01:17 UTC](https://meta.appinn.net/t/topic/30600/20 "2022-03-08T01:17:31Z")

</div>

好吧，还是简单的事情简单处理吧，谢谢各位
