Saltar al contenido

¿Cómo extraer los últimos dígitos de cadenas usando expresiones regulares?

Solución:

Aquí hay una opción con anticipación positiva:

gsub(".+_(?=\d+$)", "", X, perl = TRUE)
[1] "3"  "23" "91" "16"

Si ese es el patrón que le funciona para 2 dígitos, lo único que tendría que hacer es hacer que uno de los dígitos sea opcional usando ?

L_\d\d?_

Demostración de regex | Demostración de R


Si debe hacer coincidir todo el patrón, puede usar un grupo de captura y usar anclas para afirmar el inicio ^ y el final $ de la cadena y utilice el grupo en el reemplazo.

^L_\d\d?_(\d+)$

En partes

^      Start of string
L_     Match L_
d     Match a digit
d?    Match a digit and repeat 0 or 1 times
_      Match _
(      Capture group 1
  d+  Match a digit and repeat 1 or more times
)      Close group
$      End of string

Demostración de regex | Demostración de R

X <- c("L_1_3", "L_2_23", "L_3_91", "L_3_16")
gsub("^L_\d\d?_(\d+)$", "\1", X)

Producción

[1] "3"  "23" "91" "16"

Aquí hay una expresión regular que lo hace.
Obtiene cualquier cosa hasta que no sea un dígito seguido del grupo de captura de uno o más dígitos al final. Y reemplaza por el grupo de captura.

sub('.*[^[:digit:]]{1}([[:digit:]]+$)', '\1', x)
#[1] "3"  "23" "91" "16"

Una expresión regular que funcione para uno y dos dígitos, pero ni más ni menos sería

sub('.*[^[:digit:]]{1}([[:digit:]]{1,2}$)', '\1', x)
#[1] "3"  "23" "91" "16"

Datos

x <- scan(what = character(), text="
L_1_3
L_2_23
L_3_91
L_3_16")
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *