expresiones regulares siempre he escrito como esteRegex: ¿es perezosa?
<A HREF="([^"]*)" TARGET="_blank">([^<]*)</A>
pero me acaban de aprender acerca de este lazy thing y que puede escribir como esto
<A HREF="(.*?)" TARGET="_blank">(.*?)</A>
¿hay alguna desventaja de utilizar este segundo enfoque? La expresión regular es definitivamente más compacta (incluso SO lo analiza mejor).
Editar: Aquí hay dos mejores respuestas, que señalan dos diferencias importantes entre las expresiones. La respuesta de ysth apunta a una debilidad en el no codicioso/flojo, en el que el hipervínculo podría incluir otros atributos de la etiqueta A (definitivamente no es bueno). Rob Kennedy señala una debilidad en el ejemplo codicioso, en que los textos de anclaje no pueden incluir otras etiquetas (definitivamente no está bien, porque tampoco captaría todo el texto de anclaje) ... así que la respuesta es que, las expresiones regulares son lo que son, las soluciones perezosas y no perezosas que parecen iguales probablemente no son semánticamente equivalentes.
Editar: La tercera mejor respuesta es por Alan M sobre la velocidad relativa de las expresiones. Por el momento, marcaré su respuesta como mejor para que la gente le dé más puntos :)
¡LOL! Gracias por el impulso. –
Claro, pero aparentemente una vez que la pregunta envejece un poco ya nadie lo ama. –
Si puede cambiar la respuesta aceptada, siéntase libre de hacerlo. Mi respuesta realmente no respondió la pregunta, solo me explicó las otras respuestas. –