Ricerca…


introduzione

Questo documento introduce le basi delle espressioni regolari come usate in R. Per ulteriori informazioni sulla sintassi delle espressioni regolari di R, vedere ?regex . Per un elenco completo degli operatori di espressioni regolari, consultare questa guida ICU sulle espressioni regolari .

Usa `grep` per trovare una stringa in un vettore di caratteri

# 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 cercare "x" o "y"

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

. è un personaggio speciale in Regex. Significa "abbinare qualsiasi carattere"

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

Fai attenzione quando cerchi di abbinare i punti!

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

Per abbinare un carattere letterale, devi sfuggire alla stringa con una barra rovesciata ( \ ). Tuttavia, R cerca di cercare i caratteri di escape durante la creazione di stringhe, quindi è effettivamente necessario eseguire l'escape della barra rovesciata (ovvero è necessario eseguire il doppio escape dei caratteri delle espressioni regolari).

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

Se vuoi abbinare uno di più caratteri, puoi racchiudere questi caratteri tra parentesi ( [] )

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

Potrebbe essere utile indicare sequenze di caratteri. Ad esempio [0-4] corrisponderà a 0, 1, 2, 3 o 4, [AZ] corrisponderà a qualsiasi lettera maiuscola, [Az] corrisponderà a qualsiasi lettera maiuscola o minuscola e [A-z0-9] corrisponderà a qualsiasi lettera o numero (cioè tutti i caratteri alfanumerici)

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

R ha anche diverse classi di collegamento che possono essere utilizzate tra parentesi. Ad esempio, [:lower:] è l'abbreviazione di az , [:upper:] è l'abbreviazione di AZ , [:alpha:] è Az , [:digit:] è 0-9 e [:alnum:] è A-z0-9 . Si noti che queste intere espressioni devono essere utilizzate all'interno di parentesi; per esempio, per abbinare una singola cifra, puoi usare [[:digit:]] (nota le doppie parentesi). Come altro esempio, [@[:digit:]/] corrisponderà ai caratteri @ , / o 0-9 .

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

Le parentesi possono anche essere usate per negare una corrispondenza con un carato ( ^ ). Ad esempio, [^5] corrisponderà a qualsiasi carattere diverso da "5".

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow