R Language
Syntaxe d'expression régulière en R
Recherche…
Introduction
Ce document présente les bases des expressions régulières utilisées dans R. Pour plus d'informations sur la syntaxe des expressions régulières de R, voir ?regex
. Pour une liste complète des opérateurs d'expression régulière, consultez ce guide ICU sur les expressions régulières .
Utilisez `grep` pour trouver une chaîne dans un vecteur de caractères
# 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
signifie rechercher "x" ou "y"
grep('5|8', mystring)
# [1] 1 2
grep('com|org', mystring)
# [1] 5 6
.
est un caractère spécial dans Regex. Cela signifie "correspondre à n'importe quel caractère"
grep('The number .', mystring)
# [1] 1 2
Soyez prudent lorsque vous essayez de faire correspondre les points!
tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2
Pour correspondre à un caractère littéral, vous devez échapper à la chaîne avec une barre oblique inverse ( \
). Cependant, R essaie de rechercher des caractères d'échappement lors de la création de chaînes. Vous devez donc échapper à la barre oblique inverse (c.-à-d. Vous devez échapper les caractères d'expression régulière).
grep('\.org', tricky)
# Error: '\.' is an unrecognized escape in character string starting "'\."
grep('\\.org', tricky)
# [1] 1
Si vous souhaitez associer un de plusieurs caractères, vous pouvez envelopper ces caractères entre crochets ( []
)
grep('[13]', mystring)
# [1] 3 4
grep('[@/]', mystring)
# [1] 5 7
Il peut être utile d'indiquer les séquences de caractères. Par exemple, [0-4]
correspondra à 0, 1, 2, 3 ou 4, [AZ]
correspondra à n'importe quelle lettre majuscule, [Az]
correspondra à toute lettre majuscule ou minuscule et [A-z0-9]
correspondra à n'importe quelle lettre. lettre ou numéro (c.-à-d. tous les caractères alphanumériques)
grep('[0-4]', mystring)
# [1] 3 4
grep('[A-Z]', mystring)
# [1] 1 2 4 5 6
R dispose également de plusieurs classes de raccourcis pouvant être utilisées entre parenthèses. Par exemple, [:lower:]
est court pour az
, [:upper:]
est court pour AZ
, [:alpha:]
est Az
, [:digit:]
est 0-9
et [:alnum:]
est A-z0-9
. Notez que ces expressions entières doivent être utilisées entre crochets; Par exemple, pour faire correspondre un seul chiffre, vous pouvez utiliser [[:digit:]]
(notez les doubles crochets). Comme autre exemple, [@[:digit:]/]
correspondra aux caractères @
, /
ou 0-9
.
grep('[[:digit:]]', mystring)
# [1] 1 2 3 4
grep('[@[:digit:]/]', mystring)
# [1] 1 2 3 4 5 7
Les crochets peuvent également être utilisés pour annuler une correspondance avec un carat ( ^
). Par exemple, [^5]
correspondra à n'importe quel caractère autre que "5".
grep('The number [^5]', mystring)
# [1] 2