R Language
Reguliere expressiesyntaxis in R
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