提取特殊字符之间的文本 R
extracting text R between special characters
我有多个字符串,如下所示:
filename="numbers [www.imagesplitter.net]-0-0.jpeg"
filename1="numbers [www.imagesplitter.net]-0-1.jpeg"
filename2="numbers [www.imagesplitter.net]-19-9.jpeg"
我想要出现在第二个“-”和最后一个句点之间的文本。
我想分别得到0,1,9
我该怎么做?我不确定如何检测第二个“-”和最后一个句点。
尝试
sub('^[^-]*-[^-]*-(\d+)\..*$', '\1', files)
#[1] "0" "1" "9"
或
gsub('^[^-]*-[^-]*-|\..*$', '', files)
#[1] "0" "1" "9"
数据
files <- c(filename, filename1, filename2)
试试这个:
files=c(filename, filename1, filename2)
sub(".*-(.+)\.jpeg", "\1", files)
你可以试试
sub("^[^-]+-[^-]+-(.*)\.[^\.]*$", "\1", c(filename, filename1, filename2))
[1] "0" "1" "9"
您也可以使用 regmatches
功能。
> x <- c("numbers [www.imagesplitter.net]-0-0.jpeg","numbers [www.imagesplitter.net]-0-1.jpeg", "numbers [www.imagesplitter.net]-19-9.jpeg")
> unlist(regmatches(x, gregexpr("^(?:[^-]*-){2}\K.*(?=\.)", x, perl=TRUE)))
[1] "0" "1" "9"
您可以在 stringr
和 str_extract_all
函数中使用相同的正则表达式。
> library(stringr)
> unlist(str_extract_all(x, perl("^(?:[^-]*-){2}\K.*(?=\.)")))
[1] "0" "1" "9"
或
> unlist(str_extract_all(x, perl("(?<=-)[^-.]*(?=\.)")))
[1] "0" "1" "9"
或
> unlist(str_extract_all(x, perl(".*-\K\d+")))
[1] "0" "1" "9"
我会简单地使用 strsplit
在此处相应地拆分字符串:
sapply(strsplit(files, '[-.]'), '[', 5)
# [1] "0" "1" "9"
我有多个字符串,如下所示:
filename="numbers [www.imagesplitter.net]-0-0.jpeg"
filename1="numbers [www.imagesplitter.net]-0-1.jpeg"
filename2="numbers [www.imagesplitter.net]-19-9.jpeg"
我想要出现在第二个“-”和最后一个句点之间的文本。 我想分别得到0,1,9
我该怎么做?我不确定如何检测第二个“-”和最后一个句点。
尝试
sub('^[^-]*-[^-]*-(\d+)\..*$', '\1', files)
#[1] "0" "1" "9"
或
gsub('^[^-]*-[^-]*-|\..*$', '', files)
#[1] "0" "1" "9"
数据
files <- c(filename, filename1, filename2)
试试这个:
files=c(filename, filename1, filename2)
sub(".*-(.+)\.jpeg", "\1", files)
你可以试试
sub("^[^-]+-[^-]+-(.*)\.[^\.]*$", "\1", c(filename, filename1, filename2))
[1] "0" "1" "9"
您也可以使用 regmatches
功能。
> x <- c("numbers [www.imagesplitter.net]-0-0.jpeg","numbers [www.imagesplitter.net]-0-1.jpeg", "numbers [www.imagesplitter.net]-19-9.jpeg")
> unlist(regmatches(x, gregexpr("^(?:[^-]*-){2}\K.*(?=\.)", x, perl=TRUE)))
[1] "0" "1" "9"
您可以在 stringr
和 str_extract_all
函数中使用相同的正则表达式。
> library(stringr)
> unlist(str_extract_all(x, perl("^(?:[^-]*-){2}\K.*(?=\.)")))
[1] "0" "1" "9"
或
> unlist(str_extract_all(x, perl("(?<=-)[^-.]*(?=\.)")))
[1] "0" "1" "9"
或
> unlist(str_extract_all(x, perl(".*-\K\d+")))
[1] "0" "1" "9"
我会简单地使用 strsplit
在此处相应地拆分字符串:
sapply(strsplit(files, '[-.]'), '[', 5)
# [1] "0" "1" "9"