是否有类似正则表达式的东西用自己替换多字节字符?
即。我有一个大文本文件,其中包含以下字符:
漁魚京供侠競共
并希望将其替换为:
漁;
魚;
京;
供;
...
如何使用正则表达式执行此操作?我已经尝试过了:
(.)
替换为
\1;\n
但是“将”多字节字符(即utf8)“拆分”为每行一个字节(因此一个字符超过2行分割)。对于单字节字符,它工作正常......任何帮助都将受到高度赞赏。
答案 0 :(得分:3)
我使用Vim。我创建了一个新文件,并将您的示例文本粘贴到一行。然后我打字:
:%s/./\0;
控制+ V 输入/g
这可以根据需要成功地分隔行。
命令是:
:
- 启动一个新命令(在vim命令行上)%
- 将更改应用于整个文件s///
- 替换\0
- 对整个原始匹配的反向引用(也可以使用(.)
和\1
)g
- 替换每行的所有匹配项答案 1 :(得分:2)
使用\ P {M} \ p {M} *作为替代。要匹配任意数量的字素,请使用(?:\ P {M} \ p {M} *)+而不是\ X +
您可以在.NET中使用
(?:\ P {M} \ p {M} *)代替
(。)。