【发布时间】:2019-08-15 22:19:58
【问题描述】:
我想使用 data.table 提取某些单词后面的字符串。
主题: 从到: 日期: 消息:
预期输入: 主题:欢迎 \r\n发件人:(Jane Doe) JaneDoe@emaildomain.com\r\n收件人: (Foo Bar) Foo.Bar@emaildomain.com\r\n日期:2019 年 1 月 1 日上午 7:01:32\r\n\r\n 从我的 iPhone 发送\r\n\r\n开始转发消息: \r\n\r\n发件人:X先生
我尝试了一些函数,但无法让代码仅提取字符串的第一个实例而忽略后续字符串。我也遇到了仅捕获我正在寻找的部分的问题。
library(data.table)
x<- as.data.table("Subject: Welcome \r\nFrom: (Jane Doe) JaneDoe@emaildomain.com\r\nTo:
(Foo Bar) Foo.Bar@emaildomain.com\r\nDate: 1/1/2019 7:01:32 AM\r\n\r\n Sent from my iPhone\r\n\r\nBegin forwarded message:\r\n\r\nFrom: Mr. X <xxx@gmail.com","x1")
x[, Subject := sub('^.*Subject:\\s*|\\s*From:.*$', '', V1) ][]
x[, From := sub('^.*From:\\s*|\\s*To:.*$', '', V1) ][]
x[, To := sub('^.*To:\\s*|\\s*Date:.*$', '', V1) ][]
x[, Message := sub('^.*PM|AM\\s*|\\s*.*$', '', V1) ][]
x
当前结果: V1 主题:欢迎 \r\n发件人:(Jane Doe) JaneDoe@emaildomain.com\r\n收件人:\n (Foo Bar) Foo.Bar@emaildomain.com\r\n日期:2019 年 1 月 1 日 7:01:32 AM\r\n\r\n 从我的 iPhone 发送\r\n\r\n开始转发消息:\r\n\r\n发件人:X 先生
发件人:X先生
发件人:X先生
消息:(空白)
【问题讨论】:
-
你能告诉你预期的输出吗
标签: r regex data.table gsub