Notepad++。如何一次性将不同的字符替换为相应的字母?

Notepad++。如何一次性将不同的字符替换为相应的字母?

如何在 Notepad++ 中查找并替换文本中多个不同的字符到对应的字母?例如,我有 32 个字符需要替换。所以我有像“À”这样的字符,我想用字母“A”替换它。接下来,我有像“Æ”这样的字符,我想用字母“Ж”替换它,依此类推。通常,我有 32 个这样的字符,每次我都需要执行相同的操作。有没有办法一次完成这个?

图片演示请求

答案1

在记事本中,>= 6.0您可以使用类似以下内容替换多个字符(匹配项):

search: (Ì)|(Í)|(Î)|(Ï)|(Ð)|(Ñ)
replace: (?1H)(?2O)(?3Π)(?4P)(?5C)(?6T)

这里每个字符都是一个捕获组,并由替换字符串中的字符替换。每个替换字符指定组的索引,从 1 开始。例如,(?3Π)替换组3在本例中是字符ÎÎ -> Π

更多内容请参见这个答案

答案2

有时我也会用wReplace 来自 sharktime.com。它运行得很好。你安装它然后就可以指定任意数量的要更改的字符。

我知道这不是插入样式解决方案,但它有效。希望这能有所帮助!

使用起来非常简单。这是前后对比图

答案3

上一个问题提供了答案。简而言之,在没有插件的 Notepad++ 中,由于“查找和替换”的工作方式,这是不可能的。

我会考虑使用sed或类似的东西。

答案4

即使 Notepad++ 6 的新 RegEx 引擎支持 PCRE(来源),没有理智的(即具有线性复杂度)可靠的(即保证有效的)方法,可以让您通过一次操作实现此目的查找和替换,更不用说单个在文件中查找

但是,通过使用在文件中查找两次:

  1. 添加替代矩阵每次出现任何旧字符时:

    Find what:    ([ÌÍÎÏÐÑ])
    Replace with: ``\1`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``
    Search Mode:  Regular Expression
    

    例如,这会转变fooÌbar为。foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar

  2. 替换每个旧字符(和替代矩阵) 对应的新字符:

    Find what:    ``(.).*?`\1(.).*?``
    Replace with: \2
    Search Mode:  Regular Expression
    

    例如,这会转变foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar为。H

请注意,您需要升级到Notepad++ 6.0 或更高版本为此。虽然正则表达式本身也应该适用于旧的 RegEx 引擎,但有一个错误通常会弄乱多字节字符。

怎么运行的

    • 该字符集([ÌÍÎÏÐÑ])与这五个字符中的任意一个相匹配。

      括号将其变成第一个子表达式(参见下一项)。

    • \1表示第一个子表达式的匹配,即我们要替换的字符。

    • 所有其他字符都按字面意思处理。

    • 选择`作为分隔符是任意的。您可以使用任何其他想要的字符。

    • (.)匹配 之后的第一个字符``

      括号将其变成第一个子表达式。

    • .*?匹配尽可能少的字符。

    • `\1 符号`后跟第一个子表达式的匹配,即我们要替换的字符。

    • (.)匹配我们要替换的字符之后的第一个字符。根据我们的设计,这是它的替换字符。

      括号将其变成第二个子表达式。

    • .*?``匹配尽可能少的字符,直到``遇到最后一个字符。

有关正则表达式的更多信息,请参阅:

相关内容