如何使用perl正则表达式删除某个可识别字符串中的字符?

时间:2013-12-01 19:13:11

标签: regex perl

首先,我需要识别一个如下所示的特定字符串:

my $removeU8374 = 'test A dkdkd荴kdklsl skldsls荴lksdkdk skdkd荴kdkls';

然后我要从字符串中删除特定字符(U + 8374)。

到目前为止,我已经尝试过这个:

$removeU8374 = ~ s/^test A (.*[^\N U+8374])//g;

但它不起作用......

2 个答案:

答案 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之后的所有内容并将它们连接在一起。