regex - 为什么 # 字符在 Perl 中被视为 'word' 字符?

标签 regex perl

为什么 # 字符在 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不修改字符类的语法(或 \x20s{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/

相关文章:

javascript - 需要帮助找到正确的正则表达式模式来匹配

perl - perl 的每个功能都值得使用吗?

perl - 使用 local::lib 模块时出现的问题

json - 使用 jq 在 json 中进行类似正则表达式的搜索

java - 1 位或 2 位数字的整数

linux - 使用 MD5 与 perl archive::tar 比较磁带和磁盘中的文件失败

perl - 发货时我应该包含哪些 Perl 代码?

perl - Perl Net::SSH::Perl不加载我的环境变量与通过SSH连接

ruby - 查找多重长度的字符串

javascript - 匹配带逗号或不带逗号的行