R Language
Regular Expression Syntax in R
Sök…
Introduktion
Detta dokument introducerar grunderna för reguljära uttryck som används i R. För mer information om R: s syntax för reguljära uttryck, se ?regex
. För en omfattande lista över operatörer med reguljärt uttryck, se denna ICU-guide för reguljära uttryck .
Använd 'grep' för att hitta en sträng i en teckenvektor
# 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
betyder leta efter "x" eller "y"
grep('5|8', mystring)
# [1] 1 2
grep('com|org', mystring)
# [1] 5 6
.
är en speciell karaktär i Regex. Det betyder "matcha alla karaktärer"
grep('The number .', mystring)
# [1] 1 2
Var försiktig när du försöker matcha prickar!
tricky <- c('www.personal.org', 'My friend is a cyborg')
grep('.org', tricky)
# [1] 1 2
För att matcha en bokstavlig karaktär måste du undvika strängen med ett motstreck ( \
). R försöker emellertid leta efter flyktecken när du skapar strängar, så du måste faktiskt undvika själva motstrecket (det vill säga att du måste dubbelfalla regelbundna uttryckstecken.)
grep('\.org', tricky)
# Error: '\.' is an unrecognized escape in character string starting "'\."
grep('\\.org', tricky)
# [1] 1
Om du vill matcha en av flera tecken kan du linda in dessa tecken inom parentes ( []
)
grep('[13]', mystring)
# [1] 3 4
grep('[@/]', mystring)
# [1] 5 7
Det kan vara användbart att indikera karaktersekvenser. Exempelvis [0-4]
kommer att matcha 0, 1, 2, 3 eller 4, [AZ]
kommer att matcha alla stora bokstäver, [Az]
kommer att matcha alla stora och små bokstäver, och [A-z0-9]
kommer att matcha valfri bokstav eller nummer (dvs alla alfanumeriska tecken)
grep('[0-4]', mystring)
# [1] 3 4
grep('[A-Z]', mystring)
# [1] 1 2 4 5 6
R har också flera genvägsklasser som kan användas inom parentes. Till exempel är [:lower:]
kort för az
, [:upper:]
är kort för AZ
, [:alpha:]
är Az
, [:digit:]
är 0-9
, och [:alnum:]
är A-z0-9
. Observera att hela dessa uttryck måste användas inom parentes; till exempel för att matcha en enda siffra kan du använda [[:digit:]]
(notera de dubbla parenteserna). Som ett annat exempel kommer [@[:digit:]/]
att matcha tecknen @
, /
eller 0-9
.
grep('[[:digit:]]', mystring)
# [1] 1 2 3 4
grep('[@[:digit:]/]', mystring)
# [1] 1 2 3 4 5 7
Konsoler kan också användas för att negera en tändsticka med en karat ( ^
). Till exempel kommer [^5]
att matcha alla andra tecken än "5".
grep('The number [^5]', mystring)
# [1] 2