Después de leer una serie de preguntas/respuestas más de las últimas semanas, he visto el uso de \d
en las expresiones regulares de Perl comentadas como incorrecta. Como en las versiones posteriores de perl \d
no es lo mismo que [0-9]
, como \d
representará cualquier carácter Unicode que tenga el atributo de dígito, y que [0-9]
representa los caracteres '0', '1', '2', ..., '9'.¿Debo usar d o [0-9] para unir los dígitos en una expresión regular de Perl?
Aprecio que en algunos contextos [0-9]
será lo correcto para usar, y en otros \d
será. Me preguntaba qué personas creen que es el valor predeterminado correcto para usar.
Personalmente encuentro la notación \d
muy sucinta y expresiva, mientras que en comparación [0-9]
es algo engorroso. Pero tengo poca experiencia en hacer código en varios idiomas, o más bien código para idiomas que no encajan en el rango de caracteres ASCII, y por lo tanto, puede estar siendo ingenuo.
noto
$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
\ d puede coincidir con más de 10 caracteres diferentes, si se aplica a cadenas Unicode. – pts