2011-08-29 13 views
21

Estoy buscando la expresión regular correcta. Los siguientesUsar grep en R para buscar cadenas como palabras completas (pero no cadenas como parte de las palabras)

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

retornos todos los elementos de t1, pero sólo la primera y la segunda son correctos. Solo quiero entradas con la palabra/frase TH devuelta?

+0

pesar de que hay dos respuestas ya, debe especificar qué quiere decir con 'palabras' como en su título. ¿Qué hay de 'TH2' o' TH_TH'? –

Respuesta

30

es necesario agregar word boundary anchors (\b) alrededor de sus cadenas de búsqueda serán emparejados por lo que sólo palabras completas (es decir, palabras rodeadas de caracteres que no son de texto o de arranque/final de la cadena, donde "la palabra carácter" significa \w, es decir, caracteres alfanuméricos)

Trate

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

Puede utilizar \< y \> en una expresión regular para que coincida al principio/final de la palabra.

grep ("\\<TH\\>", t1) etc.

+0

@Tim Pietzcker fue más rápido :) Me pregunto, ¿si estas dos expresiones regulares difieren? – Anatoliy

+0

El suyo es más explícito, aunque en este caso, son funcionalmente idénticos. –

Cuestiones relacionadas