文字列から英数字以外の文字を削除するを読みましたが、問題が解決するとは思いません。
単一の正規表現を含む 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 ファイルの「逐語的」環境に挿入すると、エラーが返されます。
この正規表現が機能しないのはなぜですか?