如何从Telegram导出的长字符串列中提取channel_id纯数值
解决方法
通过正则匹配提取channel_id=后跟随的连续数字即可,针对你使用的data.table结构,两种常用实现方案如下:
方案1:搭配stringr包(写法简洁易读)
library(data.table) library(stringr) # 直接原位替换channel_id列为提取后的纯数字值 df[, channel_id := str_extract(channel_id, "(?<=channel_id=)\\d+")]
方案2:纯base R实现(无需额外安装依赖包)
library(data.table) df[, channel_id := regmatches(channel_id, regexpr("(?<=channel_id=)\\d+", channel_id, perl = TRUE))]
规则说明
所用正则(?<=channel_id=)\\d+的匹配逻辑:
(?<=channel_id=)为正向后顾断言,限定匹配位置的前缀必须是channel_id=字符串,且这部分前缀不会被计入提取结果\\d+匹配连续的数字序列,对应你需要提取的channel_id值
运行代码后即可得到你给出的预期结果。
内容的提问来源于stack exchange,提问作者Marco Liedecke
相关产品推荐
相关产品推荐

