In what follows, file "conjectures" is a 6 billion bytes file in which each line contains at most one letter P, and few (see output) have a digit following a P. "rusage" is just a home-brew resource usage summary command.
rusage egrep 'P[0-9]' conjectures > xxx 695.55 real 688.33 user 2.40 sys 0 pf 186 pr 0 sw 0 rb 8 wb 1 vcx 19206 icx 2488 mx 0 ix 0 id 0 is cat xxx A[21]=11{11}:22<LP3 rusage egrep 'P[[:digit:]]' conjectures > xxx 14.88 real 13.36 user 1.43 sys 0 pf 186 pr 0 sw 0 rb 8 wb 0 vcx 516 icx 2500 mx 0 ix 0 id 0 is cat xxx A[21]=11{11}:22<LP3 Using what is to me the more obvious [0-9] pattern takes almost 50 times as long as using the [[:digit:]] pattern. Seems very strange. grep --version grep (GNU grep) 2.25 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html >. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/ grep.git/tree/AUTHORS>. uname -a Linux jpl 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux