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
相关产品推荐
相关产品推荐

