En https://www.emacswiki.org/emacs/MultilineRegexp se encuentra la pista para usar
[\ 0- \ 377 [: nonascii:]] * \ n
en lugar del estándar
.*\norte
para hacer coincidir cualquier carácter con una nueva línea para evitar el desbordamiento de la pila de textos grandes (37 KB). ¿Es el desbordamiento la preocupación aquí, o es una ejecución coincidente para el primero también más eficaz que el segundo?
fuente
[\0-\377[:nonascii:]]*
lo haría menos entonces\\(.\\|\n\\)*
. Así que creo que el emacswiki está mal en este caso.|
podría necesitar más retroceso, pero si realmente depende de cómo se compila.[\0-\377[:nonascii:]]*
(lo cual es bastante inusual, ya que podría usarlo enpoint-max
lugar de buscarlo a través de una expresión regular de este tipo) (para los curiosos: el quid de la cuestión es si el conjunto de caracteres puede coincidir después de que el * es disjunta de la serie de carbón que puede coincidir en el *. Si se trata de disjuntos, entonces el motor de expresiones regulares se saltará la grabación de pasos intermedios, y por lo tanto evitar el consumo de espacio de pila. por lo tanto.*\n
, y[^a]*a
no consumir la pila, mientras.*a
hace).