在我维护的一些代码中,我找到了表达式:
$r->{DISPLAY} =~ s/\Device//s;
令我惊讶的是它与设备和设备匹配!
我没有在文档中提到\ D,只有\ d。
有人可以澄清......
答案 0 :(得分:19)
\D
是对\d
的否定,即它匹配任何不是数字的内容。
答案 1 :(得分:11)
在那个正则表达式中,\D
看起来像是一个错字。它适用于d
和D
,只是因为它匹配任何不是数字的字符(0-9)。
更合适的正则表达式(如果意图匹配“device”或“Device”)是:
s/(d|D)evice// # one way
s/[dD]evice// # another way
s
选项也有点奇怪。来自perldoc perlop
s Treat string as single line. (Make . match a newline)
并且在该行中没有这样的匹配。
答案 2 :(得分:2)
您已经有了答案,但是perldoc perlrecharclass中有关于它的文档。请参阅有关Backslash sequences。
的信息在perldoc perlrequick和使用字符类下的常规perldoc perlretut中也提到了它。然而,在这两个部分中,它被埋没了。