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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow