是否有类似正则表达式的东西可以用它们自己替换多字节字符?
即我有一个很大的文本文件,其中包含如下字符:
漁魚京供侠競共
并想将它们替换为:
漁;
魚;
京;
供;
...
如何使用正则表达式来做到这一点?我已经尝试过了:
(.)
替换为
\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/