首先,我需要识别一个如下所示的特定字符串:
my $removeU8374 = 'test A dkdkd荴kdklsl skldsls荴lksdkdk skdkd荴kdkls';
然后我要从字符串中删除特定字符(U + 8374)。
到目前为止,我已经尝试过这个:
$removeU8374 = ~ s/^test A (.*[^\N U+8374])//g;
但它不起作用......
答案 0 :(得分:3)
你需要的只是
$removeU8374 =~ s/\N{U+8374}//g;
或
$removeU8374 =~ s/\x{8374}//g;
如果这不起作用,那是因为$removeU8374
实际上并不包含U + 8374。您可以使用
use Data::Dumper;
local $Data::Dumper::Useqq = 1;
print(Dumper($removeU8374));
演示:
use utf8; # Source file is encoded using UTF-8
use encode ':std', ':encoding(UTF-8)'; # Terminal expects UTF-8.
my $removeU8374 = "test A dkdkd荴kdklsl skldsls荴lksdkdk skdkd荴kdkls";
$removeU8374 =~ s/\N{U+8374}//g;
print("$removeU8374\n");
答案 1 :(得分:1)
要删除带有正则表达式的字符,您可以捕获它前后的部分并将这些部分放在一起。根据{{3}},Unicode字符与\N{U+8374}
$removeU8374 =~ s/^(test A .*)\N{U+8374}(.*)/$1$2/;
这会捕获test A ...
以及U+8374
之后的所有内容并将它们连接在一起。