2017-08-15 17 views
0
my $var= "File/"; 
$var=~ /\w/; 
print "$var"; 

期待される結果はファイルですが、それはうまくいっています。単一の単語/変数で特殊文字を削除する方法

+0

コードの出力はどのようなものですか? – ZAhmed

+0

出力は空の文字列です。 – Joey

+0

@Joey、https://stackoverflow.com/tour人々が質問に答えるときの方法を参照してください – Tim

答えて

3

です。一致演算子(m/.../またはそれを使用している場合は/.../)は、と一致するです。文字列が正規表現と一致するかどうかを示します。文字列はまったく変更されません。

代入演算子(s/.../.../)が必要です。これは、一致するテキストを新しいものに置き換えます。この場合、一致する文字列を空の文字列に置き換えます。

my $var= "File/"; 
$var =~ s/\w//; # // is an empty replacement string 
print "$var"; 

しかし、それはまだ\wマッチ任意の単語文字(英数字とアンダースコア)として正しくありません。必要なのは\Wです。これは単語以外の文字に一致します。

my $var= "File/"; 
$var =~ s/\W//; # // is an empty replacement string 
print "$var"; 
+0

アムステルダムであなたを見逃しました... – simbabque

+0

@simbabque:ありがとうございます。申し訳ありませんが、私はそこにいませんでした。 LPWで会いましょうか? –

+0

はい、間違いなく! – simbabque

1

ほとんどの場合、\wの代わりに\Wを使用しています。

my $var= "File/"; 

$var =~ s/\W+//g; 

print "$var"; 

出力は、あなたが間違った演算子を使用しているファイル

+0

また、 '/.../'を 's /.../.../'に置き換えました。それはかなり重要な変更です。 –

関連する問題