Is it a fake website?

19 enero 2010

Expresión regular para recoger un valor númerico

Repaso de expresiones regulares.

Dado el texto:
<POPULARITY URL="INSERTA_AQUI_TU_URL/" TEXT="775477"/>

necesitaba conseguir el último número, en este caso: 775477

La siguiente expresión regular funcionaba bien para cualquier nombre de dominio:
POPULARITY[^\d]*(\d+)
Test online para expresiones regulares

¿Pero qué ocurre si introducimos un dominio con números?, por ejemplo: 11870.com

pues que nos devuelve el propio dominio 11870, al coincidir con la expresión regular anterior. Para que funcione también con nombres de dominio con números, necesitamos modificarla ligeramente.

Expresión regular antes:
POPULARITY[^\d]*(\d+)

POPULARITY: Coincide con el literal POPULARITY
POPULARITY[^\d]: Coincide el literal POPULARITY más un espacio

[...]: Coincide cualquier caracter simple de una clase carácter.
^: coincide al comienzo de la cadena
\d: coincide con un dígito decimal.

POPULARITY[^\d]*: Coincide con "POPULARITY URL="

*: Coincide 0 o más ocurrencias de la expresión regular anterior.
(\d+): Coincide con uno o más digitos decimales.

Expresión regular después:
(modificada para que funcione con dominios numéricos).

<POPULARITY.*TEXT="(\d+)"\/>

¿Conoceis alguna forma alternativa o más sencilla?