Perl匹配Unicode的正则表达式

时间:2014-07-14 18:17:08

标签: perl

我试图在Perl中编写一个函数来读取字符串,找到一个特定的Mac unicode字符,并将该字符更改为相应的Windows unicode字符。我是Perl的新手,但我知道如何编写基本替换正则表达式的代码。我不确定如何匹配不同平台的特定字符。任何见解都会有所帮助。感谢

1 个答案:

答案 0 :(得分:3)

您想要的代码如下所示:

open(my $fh_in,  '<:encoding(...)', $qfn_in ) or die $!;
open(my $fh_out, '>:encoding(...)', $qfn_out) or die $!;

while (<$fh_in>) {
   s/.../.../g;
   print($fh_out $_);
}

您还没有指定输入文件的编码,输出文件所需的编码,要替换的字符以及要替换的字符,因此您需要填写那些空白。


考虑到输入文件的编码,您可以使用以下命令确定要替换的字符:

use charnames ':full';

open(my $fh_in, '<:encoding(...)', $qfn_in) or die $!;

while (<$fh_in>) {
   for (map ord, split //) {
      printf("U+%04X %s\n", $_, charnames::viacode($_));
   }

   print("\n");
}

您可能正在尝试替换

U+2019 RIGHT SINGLE QUOTATION MARK (’)

U+0027 APOSTROPHE (')

你可以用

做什么
s/\x{2019}/\x{0027}/g;