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