使用Perl正则表达式过滤MIDDLE DOT Unicode字符的正确语法是什么?

Yet*_*ene 0 regex unicode perl

我试图找出正确的语法来过滤字符串中的MIDDLE DOTUnicode字符(U+00B7)并保留原始字符串

     $_ =~ s/test_of_character (.*[^\x{00b7}])/$1/gi;
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,我不确定如何在从字符串中删除中间点之前保留原始字符串.

Bor*_*din 5

要从字符串中删除所有 Unicode MIDDLE DOT字符,您可以编写

s/\N{MIDDLE DOT}//g
Run Code Online (Sandbox Code Playgroud)

要么

tr/\N{MIDDLE DOT}//d
Run Code Online (Sandbox Code Playgroud)

我不清楚你的意思是"保留原始字符串",但是如果你想$_保持不变并删除MIDDLE DOT它的副本中的字符,那么你可以写

(my $modified = $_) =~ s/\N{MIDDLE DOT}//g
Run Code Online (Sandbox Code Playgroud)

要么

my $modified = s/\N{MIDDLE DOT}//gr
Run Code Online (Sandbox Code Playgroud)