2012-11-23 8 views
5

Eventuali duplicati:
Remove text inside brackets, parens, and/or bracessostituire il testo all'interno di parentesi nella R

Vorrei sostituire la parentesi e il testo tra parentesi in un grande file di testo.

ingresso Esempio (contenuto nel file di testo):

Keep me (Remove Me 1). Again keep me (Remove Me 2). Again again keep me (Remove Me 3). 

uscita (contenuto in un nuovo file di testo):

Keep me. Again keep me. Again again keep me. 

E 'possibile fare questo in R (ad esempio usando grep)?

risposta

20

Sì, utilizzare gsub() per sostituire tutto il testo che non si desidera con una stringa vuota.

x <- "Keep me (Remove Me 1). Again keep me (Remove Me 2). Again again keep me (Remove Me 3)." 

Ecco la regex che si desidera:

gsub(" *\\(.*?\\) *", "", x) 
[1] "Keep me. Again keep me. Again again keep me." 

Funziona così:

  • *? trova 0 o più spazi prima (e dopo) le parentesi.
  • Dal ( e ) sono simboli speciali in una regex, è necessario sfuggire a questi, vale a dire (\\(
  • Il .*? è un jolly trovare per trovare tutti i personaggi, dove la ? significa trovare in un modo non avidi. In altre parole, per impostazione predefinita l'espressione regolare è avida, in altre parole, la regex inizierà la corrispondenza alla prima parentesi di apertura e termina la corrispondenza alle parentesi di chiusura ultime
+0

+1 @Andrie sei così veloce ! – agstudy

+5

In questi giorni 15 minuti per una risposta è appena veloce, l'ho fatto solo perché è ancora festa di ringraziamento e uomo i clienti abituali mangiano ancora panini al tacchino. – Andrie

+0

Nota rapida per le persone che non hanno familiarità con la costruzione delle espressioni regolari: Credo che 'gsub (glob2rx ('(*)'), '', x)' farà il lavoro. –

Problemi correlati