正则表达式替换多字节字符?
是否有类似正则表达式的东西可以用它们自己替换多字节字符?
即我有一个很大的文本文件,其中包含这样的字符:
漁魚京供侠競共
并且想要将它们替换为:
漁;
魚;
京;
供;
...
如何使用正则表达式来做到这一点?我已经尝试过:
(.)
替换为
\1;\n
but 将多字节字符(即 utf8)“拆分”为每行一个字节(因此一个字符被拆分为 2 行以上)。对于单字节字符它工作得很好...任何帮助将不胜感激。
Is there something like an regular expression to replace multibyte characters with them self?
i.e. I have an large textfile with characters like this:
漁魚京供侠競共
and want to replace them like:
漁;
魚;
京;
供;
...
How can I do this, using a regular expression? I tried already:
(.)
replace with
\1;\n
but that "splits" multibyte characters (i.e. utf8) to one byte per line (so one character is over 2 lines splitted). For single-byte characters it works fine... Any help would be highly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用 Vim。我创建了一个新文件并将您的示例文本(渔鱼京供侠竞共)粘贴到一行中。然后我输入:
这成功地分隔了行,因为您要求。
命令为:
:
- 启动一个新命令(在 vim 命令行上)%
- 将更改应用于整个文件s///
- 替换\0
- 对整个原始匹配的反向引用(也可以使用(.)
和\1
)g
- 替换每行上的所有匹配项I use Vim. I created a new file and pasted your sample text (漁魚京供侠競共) into a line. Then I typed:
This successfully separates the lines as you require.
The commands are:
:
- start a new command (on the vim command line)%
- apply the change to the whole files///
- substitute\0
- a backreference to the whole original match (could have used(.)
and\1
also)g
- replace all occurrences on each line您可以使用
instead of
in .NET.
请参阅正则表达式 - Unicode 字符和属性
You can use
instead of
in .NET.
Refer Regex - Unicode Characters and properties