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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow