是否有类似正则表达式的东西可以用它们自己替换多字节字符?
即我有一个带有这样字符的大文本文件:
漁魚京供侠競共
并想像这样替换它们:
漁;
魚;
京;
供;
...
我该怎么做,使用正则表达式?我已经试过了:
(.)
用。。。来代替
\1;\n
但这会将多字节字符(即 utf8)“拆分”为每行一个字节(因此一个字符超过 2 行拆分)。对于单字节字符,它工作正常......任何帮助将不胜感激。
我使用Vim。我创建了一个新文件并将您的示例文本(渔鱼京供侠竞共)粘贴到一行中。然后我输入:
:%s/./\0;
Ctrl+VEnter/g
这成功地根据您的需要分隔行。
命令是:
:
- 启动一个新命令(在 vim 命令行上)%
- 将更改应用于整个文件s///
- 代替\0
- 对整个原始匹配的反向引用(也可以(.)
使用\1
)g
- 替换每一行的所有出现使用 \P{M}\p{M}* 作为替代。要匹配任意数量的字素,请使用 (?:\P{M}\p{M}*)+ 而不是 \X+
您可以使用
(?:\P{M}\p{M}*)代替
(.)在.NET 中。