Zoeken…


Invoering

Dit document introduceert de basisprincipes van reguliere expressies zoals gebruikt in R. Zie ?regex voor meer informatie over de syntaxis van de reguliere expressie van R. Raadpleeg deze ICU-handleiding voor reguliere expressies voor een uitgebreide lijst met reguliere expressie-operatoren.

Gebruik `grep` om een string in een karaktervector te vinden

# 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 betekent zoeken naar "x" of "y"

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

. is een speciaal personage in Regex. Het betekent "match met elk karakter"

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

Wees voorzichtig wanneer u punten probeert te matchen!

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

Om een letterlijk karakter te matchen, moet je de string ontsnappen met een backslash ( \ ). R probeert echter te zoeken naar escape-tekens bij het maken van tekenreeksen, dus u moet eigenlijk de backslash zelf ontsnappen (dat wil zeggen dat u dubbele escape reguliere expressietekens moet dubbel laten .)

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

Als u een van meerdere tekens wilt matchen, kunt u die tekens tussen haakjes plaatsen ( [] )

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

Het kan nuttig zijn om tekenreeksen aan te geven. Bijvoorbeeld [0-4] komt overeen met 0, 1, 2, 3 of 4, [AZ] komt overeen met elke hoofdletter, [Az] komt overeen met elke hoofdletter of kleine letter en [A-z0-9] komt overeen met elke letter of cijfer (dwz alle alfanumerieke tekens)

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

R heeft ook verschillende snelkoppelingsklassen die tussen haakjes kunnen worden gebruikt. Bijvoorbeeld: [:lower:] is kort voor az , [:upper:] is kort voor AZ , [:alpha:] is Az , [:digit:] is 0-9 en [:alnum:] is A-z0-9 . Merk op dat deze hele uitdrukkingen tussen haakjes moeten worden gebruikt; om bijvoorbeeld een enkel cijfer te vinden, kunt u [[:digit:]] (let op de dubbele haakjes). Als een ander voorbeeld komt [@[:digit:]/] overeen met de tekens @ , / of 0-9 .

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

Haakjes kunnen ook worden gebruikt om een match met een karaat te negeren ( ^ ). [^5] komt bijvoorbeeld overeen met elk ander teken dan "5".

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow