为什么 # 字符在 Perl 中被视为“单词”字符?或者我误解了这段代码应该如何工作?
#!/usr/bin/perl
my $filename = "Something_with_#_sign.jpg";
$filename =~ s/ # substitute...
[^ # characters which are NOT:
\w # "word" characters
] # end of character classes
/_/xg; # ...with an underscore
print "$filename\n";
产量:
Something_with_#_sign.jpg
我原以为 # 符号已被替换为 _(下划线)。
最佳答案
/x
不修改字符类的语法(或 \x20
或 s{3,4}
等),所以
[^ # characters which are NOT:
\w # "word" characters
] # end of character classes
是一种奇怪的写作方式
[^ "#:NOTacdefhilnorst\n\w]
关于regex - 为什么 # 字符在 Perl 中被视为 'word' 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850681/