2011-08-29 10 views
21

Sto cercando la corretta espressione regolare. I seguentiUso di grep in R per trovare le stringhe come parole intere (ma non stringhe come parte delle parole)

t1 = c("IGF2, IGF2AS, INS, TH", "TH", "THZH", "ZGTH") 
grep("TH",t1, value=T) 

restituisce tutti gli elementi di t1, ma solo il primo e secondo sono corretti. Voglio solo le voci con la parola/frase TH restituite?

+0

Nonostante ci sia già due risposte, è necessario specificare cosa si intende per 'parole', come nel titolo. Che dire di 'TH2' o' TH_TH'? –

risposta

30

è necessario aggiungere word boundary anchors (\b) intorno le stringhe di ricerca in modo che solo intere parole verranno abbinati (vale a dire le parole circondate da caratteri non-parola o di inizio/fine della stringa, dove "carattere di parola" significa \w, cioè carattere alfanumerico).

Prova

grep("\\bTH\\b",t3, value=T) 
12

È possibile utilizzare \< e \> in un'espressione regolare in modo che corrisponda a inizio/fine della parola.

grep ("\\<TH\\>", t1) ecc

+0

@Tim Pietzcker è stato più veloce :) Mi chiedo, se queste due espressioni regolari sono diverse? – Anatoliy

+0

Il tuo è più esplicito, anche se in questo caso sono funzionalmente identici. –

Problemi correlati