R Language
Sintassi delle espressioni regolari in R
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