2015-08-02 10 views
6

kullanarakÖzü karakterler "/" Daha önce ve Örneğin, ben şu etiketleri alabilirsiniz R.</p> <p>kullanarak "/" karakterinden sonra karakterleri ayıklamak çalışıyorum R

: aşağıdaki kullanarak, "/" veya "jeton" önceki karakterleri ayıklamak çalıştığınızda, ancak

"JJ NN" 

döndürür

sapply(s, function(x){gsub("([a-z].*?)/([A-z].*?)", "\\1", x)}) 

Ben

"helloJ worldN" 

nasıl "merhaba dünya" olsun ve neden orada kayma Etiketin ilk harfi olsun?

+0

Uzunluğunun bir vektöründe sapply kullanıyorsunuz. neden sadece gsub ('/ [az] +', '', s, ignore.case = TRUE) 've' gsub ('[az] + /', '', s, ignore.case = TRUE) ' ? – rawr

+0

gsub ('/ \\ w +', '', s) ' – akrun

cevap

3

Çıktıda kalan harfleri almanızın sebebi regex'tir. [A-Z] (olmalı Z, ben z bir yazım hatası olduğunu tahmin - [A-Za-z] Shorthand class? bakınız) Tamam, ama mümkün olduğunca az yeni satır dışındaki 0 ​​veya sınırsız karakterlerle eşleşen bir .*? tembel nokta eşleştirme grubu tarafından takip edilmektedir. Yani, will match none.

Bir + nicelik 1 veya daha fazla karakter eşleşmesi ve karakter sınıfına [a-zA-Z] uygulamak gerekir:

s <- "hello/JJ world/NN" 
sapply(s, function(x){gsub("([a-zA-Z])/[a-zA-Z]+", "\\1", x)}) 

Kullanmadığınız çünkü

demo Ben ikinci gruba kaldırıldı bakın.

+0

'u deneyin ya da çıktıyı kodun altına kopyalayıp yapıştırabilirsiniz? – rawr

İlgili konular