regex - 正则表达式替换多字节字符?

标签 regex utf-8 notepad++ multibyte

是否有类似正则表达式的东西可以用它们自己替换多字节字符?

即我有一个很大的文本文件,其中包含如下字符:

漁魚京供侠競共

并想将它们替换为:

漁;
魚;
京;
供;
...

如何使用正则表达式来做到这一点?我已经尝试过了:

(.)

替换为

\1;\n

但是将多字节字符(即 utf8)“拆分”为每行一个字节(因此一个字符被拆分为 2 行)。对于单字节字符,它工作得很好...任何帮助将不胜感激。

最佳答案

我使用Vim 。我创建了一个新文件并将您的示例文本(渔鱼京供侠竞共)粘贴到一行中。然后我输入:

:%s/./\0;Ctrl+VEnter/g

这成功地根据您的需要分隔了线条。

命令是:

  • : - 启动一个新命令(在 vim 命令行上)
  • % - 将更改应用于整个文件
  • s/// - 替换
  • \0 - 对整个原始匹配的反向引用(也可以使用 (.)\1)
  • Ctrl+V - 将下一个击键转义为文字字符
  • g - 替换每行中出现的所有内容

关于regex - 正则表达式替换多字节字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543224/

相关文章:

python - 将两个正则表达式 - lambda 函数合并为一个

javascript - 提取多个字符串

javascript - PHP 和 JavaScript 的正则表达式

matlab, utf-8, 西里尔文

java - Java 驱动配置中的 Spring 过滤器映射

notepad++ - 在 NotePad++ 中,如何复制并粘贴 "+"部分中的所有内容?

notepad++ 中带有 2 个分号的正则表达式

JavaScript:如何用 a-j 替换 0-9

python - 将字符串从 xmlcharrefreplace 转换回 utf-8

regex - Notepad++ 搜索并替换为制表符分隔文件