最近几周我看了很多问题/答案,发现在perl正则表达式中使用\d
被评论为不正确。因为在perl的后续版本中,\d
与[0-9]
不同,\d
将表示任何具有数字属性的Unicode字符,而[0-9]
则表示字符'0','1','2',...,'9'。
我知道在某些情况下,[0-9]
将是正确的用法,而在其他情况下,则是\d
。我想知道人们认为哪个是正确的默认用法?
个人觉得\d
符号非常简洁且表达力强,而相比之下,[0-9]
则有些冗长。但我对编写多语言代码或者说针对不符合ASCII字符范围的语言代码的经验很少,因此可能有点天真。
我注意到...
$find /System/Library/Perl/5.8.8/ -name \*pm | xargs grep '\\d' | wc -l
298
$find /System/Library/Perl/5.8.8/ -name \*pm | xargs grep '\[0-9\]' | wc -l
26