如何在 Notepad++ 中查找并替换文本中多个不同的字符到对应的字母?例如,我有 32 个字符需要替换。所以我有像“À”这样的字符,我想用字母“A”替换它。接下来,我有像“Æ”这样的字符,我想用字母“Ж”替换它,依此类推。通常,我有 32 个这样的字符,每次我都需要执行相同的操作。有没有办法一次完成这个?
答案1
在记事本中,>= 6.0
您可以使用类似以下内容替换多个字符(匹配项):
search: (Ì)|(Í)|(Î)|(Ï)|(Ð)|(Ñ)
replace: (?1H)(?2O)(?3Π)(?4P)(?5C)(?6T)
这里每个字符都是一个捕获组,并由替换字符串中的字符替换。每个替换字符指定组的索引,从 1 开始。例如,(?3Π)
替换组3
在本例中是字符Î
。Î -> Π
更多内容请参见这个答案。
答案2
有时我也会用wReplace 来自 sharktime.com。它运行得很好。你安装它然后就可以指定任意数量的要更改的字符。
我知道这不是插入样式解决方案,但它有效。希望这能有所帮助!
答案3
答案4
即使 Notepad++ 6 的新 RegEx 引擎支持 PCRE(来源),没有理智的(即具有线性复杂度)和可靠的(即保证有效的)方法,可以让您通过一次操作实现此目的查找和替换,更不用说单个在文件中查找。
你能但是,通过使用在文件中查找两次:
添加替代矩阵每次出现任何旧字符时:
Find what: ([ÌÍÎÏÐÑ]) Replace with: ``\1`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT`` Search Mode: Regular Expression
例如,这会转变
fooÌbar
为。foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar
替换每个旧字符(和替代矩阵) 对应的新字符:
Find what: ``(.).*?`\1(.).*?`` Replace with: \2 Search Mode: Regular Expression
例如,这会转变
foo``Ì`ÌH`ÍO`ÎΠ`ÏP`ÐC`ÑT``bar
为。H
请注意,您需要升级到Notepad++ 6.0 或更高版本为此。虽然正则表达式本身也应该适用于旧的 RegEx 引擎,但有一个错误通常会弄乱多字节字符。
怎么运行的
该字符集
([ÌÍÎÏÐÑ])
与这五个字符中的任意一个相匹配。括号将其变成第一个子表达式(参见下一项)。
\1
表示第一个子表达式的匹配,即我们要替换的字符。所有其他字符都按字面意思处理。
选择
`
作为分隔符是任意的。您可以使用任何其他想要的字符。
(.)
匹配 之后的第一个字符``
。括号将其变成第一个子表达式。
.*?
匹配尽可能少的字符。`\1
符号`
后跟第一个子表达式的匹配,即我们要替换的字符。(.)
匹配我们要替换的字符之后的第一个字符。根据我们的设计,这是它的替换字符。括号将其变成第二个子表达式。
.*?``
匹配尽可能少的字符,直到``
遇到最后一个字符。
有关正则表达式的更多信息,请参阅: