【发布时间】:2014-11-20 22:20:12
【问题描述】:
我有一个这样的字符串:
Received @ 10/10/2014 02:29:55 a.m. Changed status: 'processing' @ 10/10/2014 02:40:20 a.m. Changed status: 'processed' @ 10/10/2014 02:40:24 a.m.
我需要使用某些规则来“解析”这个字符串:
- 第一个块是
Received日期和时间 - 第一个块之后的每个块都以
Changed status:开头并以日期和时间结束可以有任意数量的
Changed status:块(至少 1 个)并且状态可能会有所不同
我需要做的是:
- 拆分字符串并将每个块放入一个数组中。
示例:
[Received @ 10/10/2014 02:29:55 a.m.], [Changed status: 'processing' @ 10/10/2014 02:40:20 a.m.], [Changed status: 'processed' @ 10/10/2014 02:40:24 a.m.] - 每个块拆分后,我需要将每个条目拆分为三个字段
对于上面的例子,我需要的是这样的:
Received | NULL | 10/10/2014 02:29:55 am
Changed status | processing | 10/10/2014 02:40:20 am
Changed status | processed | 10/10/2014 02:40:20 am
我认为第二步很容易(每个块都可以使用@ 和: 作为分隔符进行拆分),但第一步让我不得不扯掉头发。有没有办法用正则表达式做这种事情?
我尝试了一些方法(例如Received|Changed.*[ap].m.),但它不起作用(正则表达式的求值总是返回完整的字符串)。
我想在 R 中这样做:
- 将完整的数据表(字段较多,上面的文字是最后一个)读入数据框
- “解析”此字符串并将其存储到第二个数据帧中
R 内置了对正则表达式的支持,所以这是我在接近解决方案时的第一个想法。
任何帮助将不胜感激。老实说,我在这里迷路了(但我会继续尝试......如果我找到让我更接近解决方案的步骤,我会编辑我的帖子)
【问题讨论】:
-
你打算用什么语言评估这个?
-
@DaaaahWhoosh 我计划在 R 中执行此操作(已经在帖子中...和标签中说过)。但我可以使用任何其他支持 RegEx 的语言(例如
awk)。我想直接在 R 中执行此操作,因为如果我使用其他实用程序执行此操作,无论如何我都必须将结果导入 R -
接收和更改的状态选项卡是否分隔?其他所有内容都用单个空格分隔?
-
@rawr 不幸的是,所有内容仅由空格分隔:(