2

マルチバイト文字を自分自身に置き換える正規表現のようなものはありますか?

つまり、次のような文字を含む大きなテキストファイルがあります。

漁魚京供侠競共

そしてそれらを次のように置き換えたい:

漁;
魚;
京;
供;
...

正規表現を使用してこれを行うにはどうすればよいですか? 私はすでに試しました:

(.)

と置換する

\1;\n

しかし、それはマルチバイト文字(つまり、utf8)を1行あたり1バイトに「分割」します(したがって、1文字は2行以上に分割されます)。半角文字の場合は正常に機能します...どんな助けでも大歓迎です。

4

2 に答える 2

3

私はVimを使用しています。新しいファイルを作成し、サンプルテキスト(漁魚京供侠共共)を1行に貼り付けました。次に、次のように入力しました。

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

これにより、必要に応じて行が正常に分離されます。

コマンドは次のとおりです。

  • :-新しいコマンドを開始します(vimコマンドラインで)
  • %-ファイル全体に変更を適用します
  • s///- 代わりの
  • \0-元の一致全体への逆参照(使用されている可能性が(.)あり\1ます)
  • Ctrl+V-次のキーストロークをリテラル文字としてエスケープします
  • g-各行のすべてのオカレンスを置き換えます
于 2010-12-28T02:44:53.137 に答える
2
代わりに\P{M} \ p{M}*を使用してください。任意の数の書記素に一致させるには、\ X +の代わりに(?:\ P {M} \ p {M} *)+を使用します

使用できます

(?:\ P {M} \ p {M} *)
それ以外の
(。)
.NETで。

正規表現を参照-Unicode文字とプロパティ

于 2010-12-28T02:52:26.933 に答える