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

如何在PySpark DataFrame的字母数字列中提取两个字母之间的数字

PySpark提取两个字母中间数字的实现方案

核心正则逻辑

根据你的数据规则,直接使用带捕获组的正则匹配即可:
^[A-Za-z](\d+)[A-Za-z]

  • ^ 匹配字符串开头
  • 第一个[A-Za-z]匹配开头的第一个英文字母
  • (\d+) 捕获组1,匹配1个及以上的连续数字(就是你要的两个字母中间的内容)
  • 第二个[A-Za-z]匹配出现在第4-7位的第二个英文字母

代码实现

# 导入所需函数
from pyspark.sql.functions import regexp_extract

# 假设你的DataFrame名为df,存储原始字符串的列名为raw_str
df = df.withColumn(
    "middle_num", # 新列名
    regexp_extract("raw_str", r"^[A-Za-z](\d+)[A-Za-z]", 1)
)

注:regexp_extract的第三个参数1代表取第一个捕获组的内容,正好对应两个字母中间的数字。如果需要数值类型可以在后面追加.cast("int")转成整型。

之前正则失效的原因

  • 你用的.*是贪婪匹配规则,会尽可能匹配更长的字符串,无法精准只保留中间数字
  • 没有用捕获组把需要的数字单独拆分出来,所以匹配结果会包含前后的字母

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:06:04