我已阅读Remove Non-Alphanumeric Characters from a String并且不相信它可以解决我的问题。
我有一个包含单个正则表达式的 Perl 脚本。这旨在用空格替换文本文件中的每个非键盘字符。
#!/opt/local/bin/perl
# Delete any character (replace it with a space) that is not a visible keyboard
# character.
if($#ARGV!=0) {
print "usage: pass a *single* filename as argument. Filename is a text file ...\n";
exit;
}
$infile=$ARGV[0];
#print "\$infile is $infile\n";
open(SOMEFILE, $infile)||die("can't open $infile for reading");
while(<SOMEFILE>) {
$oldStr = $_;
$newStr=$oldStr;
$newStr=~s/[^\w\s`~!@#\$\%^&*()-_=+[\]{}\\|;:'",<.>\/?àèìòùáéíóúäëïöüâêîôûÿøÀÈÌÒÙÁÉÍÓÚÄËÏÖÜÂÊÎÔÛŸØçÇß¿“”‘’æÆ£¢]/ /g;
print "$newStr";
}
close SOMEFILE;
exit;
这应该删除所有有趣的隐形字符。但它似乎不起作用。示例文件:
$ hex 1bad
0000 43 61 74 68 65 72 69 6e 65 c2 a0 0a Catherin e...
该文件1bad
包含从电子邮件复制和粘贴的文本。此文本在插入 LaTeX 文件中的“逐字”环境时,会返回错误。
为什么这个正则表达式不起作用?