2014-09-23 88 views
7

這使一切期間內刪除所有字符:一段時間之前,在字符串

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

期滿後如何保持一切?

+3

'。*?\\。'應該這樣做。 – vks 2014-09-23 09:43:27

+0

如果只有一個句點,請使用否定。 '^ [^。] * \\。' – hwnd 2014-09-23 15:24:35

回答

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

你可以使用stringilookbehind正則表達式

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

如果字符串沒有.,這retuns NA(目前尚不清楚如何在這個問題處理這個)

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

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

如果你不想考慮這個正則表達式的qdap包有char2end從特定字符抓取直到字符串結尾的函數。

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

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

## [1] "bar"  "bar.barfoo" 
相關問題