Perl正则表达式:如何用html标签替换终端控制字符?

时间:2013-11-01 21:06:03

标签: html regex perl

如何用HTML标签替换终端控制字符?

my ($black,$red,$green,$reset) = ('^[[30m','^[[38m','^[[92m','^[[0m');    

my $LogString = $red.'red'.$reset;

printf ("%s\n",$LogString);

$LogString =~s/$red/<font color="red">/g;
$LogString =~s/$reset/<\/font>/g;

printf HTML ("%s\n",$LogString);

1 个答案:

答案 0 :(得分:4)

您需要确保正确转义正则表达式中的字符。否则,例如[^[[38m)中的$red等正则表达式元字符被认为是字符类的开头分隔符。

考虑改为:

$LogString =~s/\Q$red\E/<font color="red">/g;
$LogString =~s/\Q$reset\E/<\/font>/g;

\Q\E分别禁用和重新启用正则表达式元字符。

有关详细信息,请参阅:http://perldoc.perl.org/perlre.html