Buscar..


Introducción

Este documento presenta los conceptos básicos de las expresiones regulares que se utilizan en R. Para obtener más información sobre la sintaxis de las expresiones regulares de R, consulte ?regex . Para obtener una lista completa de los operadores de expresiones regulares, consulte esta guía de la ICU sobre expresiones regulares .

Usa `grep` para encontrar una cadena en un vector de caracteres

# General syntax:   
# grep(<pattern>, <character vector>)

mystring <- c('The number 5',
              'The number 8',
              '1 is the loneliest number',
              'Company, 3 is',
              'Git SSH tag is [email protected]',
              'My personal site is www.personal.org',
              'path/to/my/file')

grep('5', mystring)
# [1] 1
grep('@', mystring)
# [1] 5
grep('number', mystring)
# [1] 1 2 3

x|y significa buscar "x" o "y"

grep('5|8', mystring)
# [1] 1 2
grep('com|org', mystring)
# [1] 5 6

. Es un personaje especial en Regex. Significa "emparejar cualquier personaje"

grep('The number .', mystring)
# [1] 1 2

¡Ten cuidado al tratar de emparejar puntos!

tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2

Para hacer coincidir un carácter literal, debes escapar de la cadena con una barra invertida ( \ ). Sin embargo, R intenta buscar caracteres de escape al crear cadenas, por lo que realmente necesita escapar de la barra invertida en sí (es decir, necesita doble caracteres de expresión regular de escape ).

grep('\.org', tricky)
# Error: '\.' is an unrecognized escape in character string starting "'\."
grep('\\.org', tricky)
# [1] 1

Si desea hacer coincidir uno de varios caracteres, puede ajustar esos caracteres entre corchetes ( [] )

grep('[13]', mystring)
# [1] 3 4
grep('[@/]', mystring)
# [1] 5 7

Puede ser útil para indicar secuencias de caracteres. Por ejemplo, [0-4] coincidirá con 0, 1, 2, 3 o 4, [AZ] coincidirá con cualquier letra mayúscula, [Az] coincidirá con cualquier letra mayúscula o minúscula, y [A-z0-9] coincidirá con cualquier letra o número (es decir, todos los caracteres alfanuméricos)

grep('[0-4]', mystring)
# [1] 3 4
grep('[A-Z]', mystring)
# [1] 1 2 4 5 6

R también tiene varias clases de acceso directo que se pueden usar entre paréntesis. Por ejemplo, [:lower:] es la abreviatura de az , [:upper:] es la abreviatura de AZ , [:alpha:] es Az , [:digit:] es 0-9 , y [:alnum:] is A-z0-9 Tenga en cuenta que estas expresiones completas deben usarse entre paréntesis; por ejemplo, para hacer coincidir un solo dígito, puede usar [[:digit:]] (observe los corchetes dobles). Como otro ejemplo, [@[:digit:]/] coincidirá con los caracteres @ , / o 0-9 .

grep('[[:digit:]]', mystring)
# [1] 1 2 3 4
grep('[@[:digit:]/]', mystring)
# [1] 1 2 3 4 5 7

Los soportes también se pueden usar para anular una coincidencia con un quilate ( ^ ). Por ejemplo, [^5] coincidirá con cualquier carácter que no sea "5".

grep('The number [^5]', mystring)
# [1] 2


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow