expresiones regulares solo coincidencias muy específicas con dos URL similares antes de la captura

Así que estoy tratando de extraer solo el nombre de ciertas imágenes con la extensión de imagen capturada junto con él. El único problema es que hay dos formas muy similares y solo dos formas de mostrar la URL de la imagen.

La primera url se muestra como esta

http://www.trollface.com/dolan/images/IMGnameEYEwant.jpg

El único problema es que ocasionalmente la imagen también se muestra de esta manera:

http://www.trollface.com/dolan/images/small/IMGnameEYEwant.jpg

Ahora sé que esto no es elegante de ninguna manera, pero algo como esto es lo que he estado usando:

trollface\.com/dolan/images/(.*?)">

Esto ha estado funcionando bien hasta ahora debido a cuán similares son las dos URL

Otro problema es que necesito que la solución sea pura expresión regular. Sin java, php, javascript nada. Incluso intenté que literalmente intentara cada combinación de letras de antemano de esta manera, lo que nuevamente sé que es una metodología extremadamente mala, pero soy un novato de expresiones regulares:

[ao][gr]e[s/][/i][pm][ra][og][de][us][c/][tp][/r][so][md][au][lc][lt]/(.*?)">

El único problema con esto es que siempre encontrará primero la primera URL debido a lo similares que son y también siempre capturará la small/parte de la URL que NO NECESITO.

¿Cómo haría esto? Estaba pensando en mirar hacia atrás o mirar hacia atrás, pero no tengo la experiencia suficiente para hacer que funcionen.

EDITAR: el núcleo está basado en Java, pero en la situación actual, no puedo usar Java para ayudar con este problema :(

Respuesta 1
#http://www.trollface.com/dolan/images/(?:small/)?([^/\#]+)#

Una explicación de la expresión regular, después de la coincidencia literal:

(?: ... )

un grupo sin captura. Significado "coincide con esto, pero no lo devuelvas".

... ?

Haga que el grupo anterior sea opcional.

(  ... )

Un grupo de captura

[^/\#]+

cualquier carácter que no sea una barra diagonal o una etiqueta hash, una o más veces. Es posible que no necesite escapar de esto en Java.

Respuesta: 2

Estoy trabajando con Spring en Java y estoy tratando de crear una API de descanso para mi programa. Tengo 3 entidades para administrar, así que también tengo 3 clases DAO. mi problema es que tengo 2 tipos de usuarios (jugador y ...

Me preguntaba si hay algunos tipos de mecanismos de devolución de llamada en la API del servidor Java RMI. Lo que quiero lograr es que recibo una llamada en eventos como: Se invocó el método de conexión abierta ...

¿Alguien podría decir cuándo TeeMap realiza la clasificación, al agregar entradas mediante el método put o, por ejemplo, antes de iterar el mapa? Traté de encontrar en Javadoc pero sin suerte.

¿Por qué no se invoca / llama al constructor predeterminado durante el mecanismo de deserialización? Seguí la discusión y los comentarios, pero no encontré una respuesta satisfactoria. Entiendo durante la deserialización ...