使用正则表达式将字符行拆分为列

问题描述 投票:0回答:1

我有一个单列数据集,其中每一行都是不同长度的连接字符串。我正在尝试使用正则表达式将每一行分成 3 列。数据集的示例如下所示。

第 1 列 (ID) 是字母数字的初始字符串。长度始终相同(在本例中为 24 个字符)

第 2 列(类型)将是中间位。长度和字符类型可能有所不同(& 符号、空格、斜杠、逗号,但绝不是数字)

第 3 列(数字)将是字符串最终数字序列,其长度也是固定的(在本例中为 14)。

c23uij49753dfd3273shdjsh /Animals/Birds/Cardinal 0.873289139232
91873nc9248jfe08jsdif894 /Animals/Mammals/Felines/Tigers 0.989734823872
38939137fhjnffnf73nxlppa /Transportation/Automobiles & Vehicles/Ford-Explorer 0.983947399348
data <- data.frame(
  string=c("c23uij49753dfd3273shdjsh /Animals/Birds/Cardinal 0.873289139232", 
          "91873nc9248jfe08jsdif894 /Animals/Mammals/Felines/Tigers 0.989734823872", 
           "38939137fhjnffnf73nxlppa /Transportation/Automobiles & Vehicles/Ford-Explorer  0.983947399348"))

我一直在尝试使用 extract(),但无法获得针对中间部分的正则表达式。像下面这样的东西是在正确的轨道上,但并没有让我到达那里。

output <- extract(data, string, into=c('ID', "Type", "Numerical"), "(.{24)([a-zA-Z]*)(.{14})
r regex split
1个回答
1
投票

你可以使用

^(\w{24})\s+(.*?)\s+(\d+\.\d+)$

请参阅 正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.