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

R语言:如何用正则拆分字符串中文本与末尾数字至数据框两列?

拆分含文本与数字的字符串为数据框两列

给定包含文本(单词、空格)和数字(整数、小数)的字符串列,需要将其拆分为两列:A列存储文本部分,B列存储数字部分。现有示例数据如下:

require(tidyr)
df <- data.frame(x = c("This is text0", "This is a bit more text 0.01", "Even more text12.231"))

当前代码已能捕获B列的数字,但无法正确提取A列的文本:

df |> 
  extract(x, c("A", "B"), "()(\\d+\\.*\\d*)")
#   A      B
# 1    0
# 2    0.01
# 3    12.231

解决方案

调整正则表达式,第一组使用非贪婪匹配捕获数字前的所有文本内容,修正后的代码如下:

df |> 
  extract(x, c("A", "B"), "^(.*?)(\\d+\\.*\\d*)$")
#                     A      B
# 1        This is text      0
# 2 This is a bit more text  0.01
# 3       Even more text 12.231

正则说明:

  • ^(.*?):从字符串开头开始,非贪婪匹配所有字符(直到遇到后续的数字),对应A列的文本部分
  • (\\d+\\.*\\d*):匹配整数或小数格式的数字,对应B列的数字部分
  • $:匹配字符串结尾,确保捕获到最后一组数字

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:49