2014-09-23 12 views
7

यह सब कुछ रहता है में एक अवधि से पहले सभी पात्रों निकालें:अवधि से पहले एक स्ट्रिंग

gsub("\\..*","", data$column) 

कैसे अवधि के बाद सब कुछ रखने के लिए?

+3

'। *? \\। 'इसे करना चाहिए। – vks

+0

यदि केवल एक अवधि है, तो निषेध का उपयोग करें। '^ [^।] * \\।' – hwnd

उत्तर

1

उपयोग करें:

gsub(".*\\.","", data$column) 

इस अवधि

12

के बाद सब कुछ रखना होगा (अवधि सहित) एक स्ट्रिंग में एक अवधि से पहले सभी पात्रों को निकालने के लिए।

gsub("^.*\\.","", data$column) 

उदाहरण:

> data <- 'foobar.barfoo' 
> gsub("^.*\\.","", data) 
[1] "barfoo" 

पहली अवधि से पहले सभी पात्रों को निकालने के लिए (अवधि सहित)।

> data <- 'foo.bar.barfoo' 
> gsub("^.*?\\.","", data) 
[1] "bar.barfoo" 
2

आप lookbehind regex

library(stringi) 
stri_extract_first_regex(data1, "(?<=\\.).*") 
#[1] "bar.barfoo" 
stri_extract_first_regex(data, "(?<=\\.).*") 
#[1] "barfoo" 

साथ stringi इस्तेमाल कर सकते हैं स्ट्रिंग . नहीं है, तो, इस retuns NA (यह कैसे सवाल में इस से निपटने के लिए के बारे में स्पष्ट नहीं है)

stri_extract_first_regex(data2, "(?<=\\.).*") 
#[1] NA 

###data 
data <- 'foobar.barfoo' 
data1 <- 'foo.bar.barfoo' 
data2 <- "foobar" 
1

यदि आप qdap पैकेज के लिए रेगेक्स के बारे में नहीं सोचना चाहते हैं तोहैफ़ंक्शन जो स्ट्रिंग के अंत तक किसी विशेष वर्ण से पकड़ता है।

data <- c("foo.bar", "foo.bar.barfoo") 

library(qdap) 
char2end(data, ".") 

## [1] "bar"  "bar.barfoo" 
संबंधित मुद्दे