testo al di fuori la parentesi
> x <- c("a(b)jk(p)" ,"ipq" , "e(ijkl)")
> gsub("\\([^()]*\\)", "", x)
[1] "ajk" "ipq" "e"
testo all'interno delle parentesi
> x <- c("a(b)jk(p)" ,"ipq" , "e(ijkl)")
> gsub("(?<=\\()[^()]*(?=\\))(*SKIP)(*F)|.", "", x, perl=T)
[1] "bp" "" "ijkl"
I (?<=\\()[^()]*(?=\\))
partite tutti i personaggi che sono presenti all'interno delle parentesi e poi il seguente (*SKIP)(*F)
fa la partita fallire. Ora tenta di eseguire il modello che era appena dopo il simbolo |
rispetto alla stringa rimanente. Quindi il punto .
corrisponde a tutti i caratteri che non sono già saltati. Sostituendo tutti i personaggi abbinati con una stringa vuota si darà solo il testo presente all'interno delle racchette.
> gsub("\\(([^()]*)\\)|.", "\\1", x, perl=T)
[1] "bp" "" "ijkl"
Questa espressione regolare sarebbe di catturare tutti i personaggi che sono presenti all'interno delle parentesi e corrisponde a tutti gli altri personaggi. o parte aiuta a far corrispondere tutti i caratteri rimanenti diversi da quelli catturati. Quindi, sostituendo tutti i caratteri con i caratteri presenti all'interno dell'indice di gruppo 1, otterrai l'output desiderato.
fonte
2015-03-10 03:50:11
Questo post potrebbe essere utile: http://stackoverflow.com/questions/8613237/extract-info-inside-all-parenthesis-in-r-regex –