Ar

2012-11-23 23 views
5

Olası Çoğalt parantez içinde yazılmış metni: Ben parantezi ve büyük bir metin dosyasına parantez arasındaki metni değiştirmek istiyorum
Remove text inside brackets, parens, and/or bracesAr

.

Örnek girişi (metin dosyasında içeriği):

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

Çıkış (yeni bir metin dosyasına içeriği):

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

(grep kullanarak söylemek mümkün Ar bunu yapmanın mi)?

cevap

20

Evet, boş bir dize ile istemediğiniz tüm metni değiştirmek için gsub() kullanın. Bu gibi çalışır

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

:

  • *? önce (ve sonrası) 0 veya daha fazla boşluk bulur parantezler İşte
    x <- "Keep me (Remove Me 1). Again keep me (Remove Me 2). Again again keep me (Remove Me 3)." 
    

    istediğiniz regex olduğunu. ( ve ) bir regex özel sembollerdir yana
  • , bu kaçış gerek, yani (\\(
  • .*? bir joker ? olmayan açgözlü bir şekilde bulmak demektir tüm karakterleri bulmak bulmak. Bu normaldir, çünkü regex varsayılan olarak açgözlüdür, başka bir deyişle, varsayılan olarak regex ilk açılış parantezindeki eşleşmeyi başlatacak ve son kapanış parantezindeki eşleşmeyi sonlandırır.
+0

+1 @Andrie çok hızlısınız ! – agstudy

+5

Bir cevap vermek için 15 dakika, bu günlerde neredeyse hiç zorlanmadım çünkü hala şükran günü tatili ve insan Düzenli olarak y hala hindi sandviç yiyorlar. – Andrie

+0

Regex yapısını bilmeyen kişiler için hızlı not: Ben inanıyorum gsub (glob2rx ('(*)'), '', x) 'işi yapacak. –

İlgili konular