Perl Regex:否定字符类会产生意外结果

Perl Regex:否定字符类会产生意外结果

想知道是否有其他人在 ubuntu 12.04 上使用 perl 5.14 时遇到否定 Perl 中的字符类的问题。

给出以下小片段

while(<>) {

    print if /[^Dd]an/;
}

通过以下小输入

Dan
Frank
Steve
daniel

我希望

Frank
Steve

打印到终端而我只得到了 Frank。

只是想知道是否有其他人遇到过类似的问题并弄清楚了问题所在。我会搜索一下,看看是否能找到什么,如果找到什么,我会更新

干杯

答案1

正则表达式

/[^Dd]an/

确实不匹配Steve。基本上,您匹配了所有带有序列的行an,除了以D或开头的行d。我不明白您如何期望它与 Steve 匹配。

我认为这种行为是正确的。请记住,否定仅适用于该[]部分内的字符。

相关内容