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
"proc" "proca" "procb" "procth"
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.
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:Esto devolverá:
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ónstr_extract_all()
destringr
extrae todas las subcadenas coincidentes de la cadena dada y las devuelve como un vector o matriz, dependiendo del argumentosimplify
. En este caso, establecemossimplify = TRUE
para obtener un vector como resultado.