我是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"
我想编辑txt文件,以便在输出中我可以删除除"[...]"
中的日期/时间信息和文件路径"Library...."
我使用了str_extract函数但无法正确获取模式。
string <- readLines("string.txt")
library(stringr)
str_extract(string, " some pattern")
是split.string也是一个选项吗? 提前谢谢......
答案 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)
形成一个块,您可以在其中找到START
和END
之间的任何模式匹配。
在这两者之间,你放置了你想要找到的模式。如果您想在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