es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Expresión regular para extraer palabras que comienzan con un patrón, pero terminan antes de símbolos o espacios:

Tengo el siguiente ejemplo con proc como regex:

x <- &quot;carr proc proc_ proca select procb() procth;&quot;
pattern <- &quot;proc&quot;

El resultado esperado sería

&quot;proc&quot; &quot;proca&quot; &quot;procb&quot; &quot;procth&quot;

podría ser una lista o un vector.

Intenté varios regex diferentes con stringr::strextractall, pero no pude obtener todas las palabras que quería.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución para extraer todas las palabras que contienen “proc” en la cadena dada utilizando regex y el paquete stringr es:

    library(stringr)
    
    x <- "carr proc proc_ proca select procb() procth;"
    pattern <- "\\bproc\\w*\\b"
    
    str_extract_all(x, pattern, simplify = TRUE)
    

    Esto devolverá:

    [1] "proc"   "proca"  "procb"  "procth"
    

    Explicación:

    • \\b coincide con el límite de palabra.
    • \\w* coincide con cero o más caracteres de palabra (letras, dígitos o guiones bajos).
    • \\b nuevamente coincide con el límite de palabra para asegurar que coincidamos con palabras completas.

    Entonces, la regex \\bproc\\w*\\b coincide con cualquier palabra que comience con “proc” y contenga cero o más caracteres de palabra después de eso, hasta que alcance un carácter que no sea de palabra o el final de la palabra. La función str_extract_all() de stringr extrae todas las subcadenas coincidentes de la cadena dada y las devuelve como un vector o matriz, dependiendo del argumento simplify. En este caso, establecemos simplify = TRUE para obtener un vector como resultado.

Comments are closed.