删除字符串中句点之前的所有字符

时间:2014-09-23 09:42:32

标签: regex r string

这可以在一段时间之前保留所有内容:

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

如何在一段时间后保留所有内容?

5 个答案:

答案 0 :(得分:17)

删除字符串中句点之前的所有字符(包括句号)。

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

示例:

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

删除第一个句点之前的所有字符(包括句号)。

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

答案 1 :(得分:2)

您可以将stringilookbehind正则表达式

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

如果字符串没有.,则会重新调整NA(目前还不清楚如何在问题中处理此问题)

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

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

答案 2 :(得分:1)

使用它:

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

这将保留一段时间后的所有内容

答案 3 :(得分:1)

如果您不想为此考虑正则表达式,qdap包具有char2end函数,该函数从特定字符抓取直到字符串结尾。

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

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

## [1] "bar"        "bar.barfoo"

答案 4 :(得分:0)

require(stringr)

我开设了一个有关数据分析的课程,学生们想到了这个解决方案:

get_after_period <- function(my_vector) {    

        # Return a string vector without the characters
        # before a period (excluding the period)

        # my_vector, a string vector

        str_sub(my_vector, str_locate(my_vector, "\\.")[,1]+1) 

        }

现在,只需调用函数:

my_vector <-  c('foobar.barfoo', 'amazing.point')

get_after_period(my_vector)

[1] "barfoo" "point"