如何删除R中字符串的特定部分

时间:2015-07-20 18:06:47

标签: r string

我是R的新手,需要帮助...... 我的.txt文件有一行:

"[Thurs May 29 24:12:57 2001] 77\tExpFcn-2\tlane\tLibrary/Royalbikers/Presoms/Sec32/Initially3-3-2-08-Alpha-vs-Beta.yg\t1\t-1\t3084\t0\t1\t\005\b\002"

我想编辑tx​​t文件,以便在输出中我可以删除除"[...]"中的日期/时间信息和文件路径"Library...."

之外的所有内容

我使用了str_extract函数但无法正确获取模式。

string <- readLines("string.txt")
library(stringr)

str_extract(string, " some pattern")

是split.string也是一个选项吗? 提前谢谢......

3 个答案:

答案 0 :(得分:1)

library(stringr)
x <- "[Thurs May 29 24:12:57 2001]77\tExpFcn-2\tlane\tLibrary/Royalbikers/Presoms/Sec32/Initially3-3-2-08-Alpha-vs-Beta.yg\t1\t-1\t3084\t0\t1\t\005\b\002"
str_extract(x, "(?<=\\[).+?(?=\\])")

作为解释

(?<=START)配对的

(?=END)形成一个块,您可以在其中找到STARTEND之间的任何模式匹配。

在这两者之间,你放置了你想要找到的模式。如果您想在car[之间找到],请使用(?<=\\[)car(?=\\])

模式.+?是一种说出任何字符的方式。

答案 1 :(得分:1)

你只需要基础R,不需要额外的库。

> string
[1] "[Thurs May 29 24:12:57 2001] 77\tExpFcn-2\tlane\tLibrary/Royalbikers/Presoms/Sec32/Initially3-3-2-08-Alpha-vs-Beta.yg\t1\t-1\t3084\t0\t1\t\005\b\002"

> part1 <- substring(string, (regexpr("[", string, fixed = T)[1]) + 1, (regexpr("]", string, fixed = T)[1]) - 1)
> part1
[1] "Thurs May 29 24:12:57 2001"

> part2 <- substring(string, regexpr("Library", string, fixed = T)[1], nchar(string ))
> part2
[1] "Library/Royalbikers/Presoms/Sec32/Initially3-3-2-08-Alpha-vs-Beta.yg\t1\t-1\t3084\t0\t1\t\005\b\002"

> result <- paste(part1,", ",part2)
> result
[1] "Thurs May 29 24:12:57 2001 ,  Library/Royalbikers/Presoms/Sec32/Initially3-3-2-08-Alpha-vs-Beta.yg\t1\t-1\t3084\t0\t1\t\005\b\002"

答案 2 :(得分:0)

感谢您的帮助..我使用了您的代码以及我找到了一个适合我的问题的表达式......

x&lt; - str_split(string,“\ t”) - 这将创建一个由“\ t”

分隔的所有字符的列表

part1&lt; - sapply(part2,function(x){x [1]}) part2&lt; - sapply(part2,function(x){x [2]})

ans&lt; - paste(part1,part2,sep =“”) ANS