Having read a number of questions/answers over the past few weeks, I have seen the use of \d
in perl regular expressions commented on as incorrect. As in the later versions of perl \d
is not the same as [0-9]
, as \d
will represent any Unicode character that has the digit attribute, and that [0-9]
represents the characters '0', '1', '2', ..., '9'.
I appreciate that in some contexts [0-9]
will be the correct thing to use, and in others \d
will be. I was wondering which people feel is the correct default to use?
Personally I find the \d
notation very succinct and expressive, whereas in comparison [0-9]
is somewhat cumbersome. But I have little experience of doing multi-language code, or rather code for languages that do not fit into the ASCII character range, and therefore may be being naive.
I notice
$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
Thanks Beano