You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用tidyr::separate,如何编写正则拆分数据为指定五列?

用tidyr提取Details列到多列的正则方案

针对你的需求,使用tidyr::extract函数(相比separate更适合从结构化字符串中提取指定字段)配合正则表达式,可以直接将Details列拆分为Reference、Pages、Date、Month、Year五列,具体实现如下:

完整代码

# 加载所需包
library(tidyr)
library(dplyr)

# 你的原始数据框
df <- structure(list(Details = c("\r\n\t\t\t\t\t\t\t\tReference No: F&A0067\r\n\t\t\t\t\t\t\t\tPages: 5\t\r\n\t\t\t\t\t\t\t\tPublished on: 1, January, 1965\r\n\t\t\t\t\t\t\t", 
"\r\n\t\t\t\t\t\t\t\tReference No: OB0233\r\n\t\t\t\t\t\t\t\tPages: 7\r\n\t\t\t\t\t\t\t\tPublished on: 26, June, 2018\r\n\t\t\t\t\t\t\t", 
"\r\n\t\t\t\t\t\t\t\tReference No: F&A0303\r\n\t\t\t\t\t\t\t\tPages: 1\t\r\n\t\t\t\t\t\t\t\tPublished on: 1, January, 1977\r\n\t\t\t\t\t\t\t", 
"\r\n\t\t\t\t\t\t\t\tReference No: BP0101\r\n\t\t\t\t\t\t\t\tPages: 7\r\n\t\t\t\t\t\t\t\tPublished on: 1, January, 1977\r\n\t\t\t\t\t\t\t", 
"\r\n\t\t\t\t\t\t\t\tReference No: P&IR0229\r\n\t\t\t\t\t\t\t\tPages: 4\r\n\t\t\t\t\t\t\t\tPublished on: 23, June, 2015\r\n\t\t\t\t\t\t\t", 
"\r\n\t\t\t\t\t\t\t\tReference No: BP0299\r\n\t\t\t\t\t\t\t\tPages: 32\r\n\t\t\t\t\t\t\t\tPublished on: 28, October, 2004\r\n\t\t\t\t\t\t\t")), row.names = c(NA, 6L), class = "data.frame")

# 提取字段
df_extracted <- df %>%
  extract(
    col = Details,
    into = c("Reference", "Pages", "Date", "Month", "Year"),
    regex = "^\\s*Reference No:\\s*(\\S+)\\s+Pages:\\s*(\\S+)\\s+Published on:\\s*(\\d+),\\s*(\\w+),\\s*(\\d+)\\s*$",
    remove = TRUE  # 可选,移除原始Details列
  )

# 查看结果
print(df_extracted)

正则表达式说明

正则中的每个捕获组对应要提取的字段:

  • ^\\s*:匹配开头任意数量的空白字符(包括换行、制表符)
  • Reference No:\\s*(\\S+):匹配"Reference No: "后,捕获非空白字符序列(即Reference编号)
  • \\s+Pages:\\s*(\\S+):匹配任意空白+"Pages:"后,捕获非空白字符序列(即页数)
  • \\s+Published on:\\s*(\\d+),\\s*(\\w+),\\s*(\\d+):匹配任意空白+"Published on: "后,依次捕获日期数字、月份名称、年份数字,同时忽略分隔的逗号与空白
  • \\s*$:匹配结尾任意数量的空白字符

结果验证

处理后第一行的提取结果为:

  • Reference: F&A0067
  • Pages: 5
  • Date: 1
  • Month: January
  • Year: 1965
    完全符合你的需求。

内容的提问来源于stack exchange,提问作者Eva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:10:52