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

如何用正则表达式提取DataFrame列字符串的中间单个数字

提取字符串中间单个数字的正则表达式方案

针对你DataFrame中day_survey_prompt列的格式(如14.5.85),可以用以下几种正则表达式实现需求:

方法1:利用正向/反向预查(推荐)

使用带预查的正则,直接匹配中间的单个数字,不会捕获句点:

str_extract(day_survey_prompt, "(?<=\\.)\\d(?=\\.)")
  • (?<=\.):反向预查,确保目标数字的前一个字符是句点(但不捕获句点)
  • \d:匹配单个数字(正好对应你需求中1-8的单个数字)
  • (?=\.):正向预查,确保目标数字的后一个字符是句点(同样不捕获句点)

测试14.5.85时,会直接返回5,完全符合预期。

方法2:利用捕获组

通过捕获组锁定中间的数字,str_extract会自动提取第一个捕获组的内容:

str_extract(day_survey_prompt, "^\\d+\\.(\\d)\\.\\d+$")
  • ^\d+\.:匹配开头的数字部分加句点(如14.)
  • (\d):捕获中间的单个数字(这部分就是我们要的结果)
  • \.\d+$:匹配结尾的句点加数字部分(如.85)

你之前尝试的问题说明

  • [^.]*$:这个正则是匹配最后一个句点之后的所有非句点字符,所以会拿到末尾的85
  • [^.]*[.$]:这个正则是匹配从开头到第一个句点的内容(包括句点),所以会拿到14.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 18:53:13