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

PySpark如何用regexp_extract简化斜杠分隔字段提取逻辑

使用regexp_extract简化斜杠分隔字段提取

你原来嵌套多层substring_index的写法可以通过正则捕获组大幅简化,不需要额外写when...otherwise分支做格式判断,regexp_extract匹配不到目标内容时会默认返回空字符串,和你原有逻辑的输出规则完全对齐。

实现逻辑

待处理字符串固定以T- 为前缀,后续跟随3段由/分隔的目标值,直接用带3个捕获组的正则匹配整段字符串即可:

  • 正则规则:^T-\s*([^/]+)/([^/]+)/([^/]+)$
  • 第1个捕获组匹配T-后到第一个/之间的内容,对应ACode
  • 第2个捕获组匹配两个/之间的内容,对应BCode
  • 第3个捕获组匹配最后一个/到字符串末尾的内容,对应CCode
  • 正则中\s*可以自动适配T-后任意数量的空白字符,比原来硬编码匹配固定空格的写法兼容性更好

具体代码

# 定义统一提取正则
field_extract_re = r'^T-\s*([^/]+)/([^/]+)/([^/]+)$'

result_df = source_df.withColumn("ACode", regexp_extract(col("column1"), field_extract_re, 1)) \
                     .withColumn("BCode", regexp_extract(col("column1"), field_extract_re, 2)) \
                     .withColumn("CCode", regexp_extract(col("column1"), field_extract_re, 3))

提取结果验证

针对你给出的示例值,提取结果完全符合预期:

column1ACodeBCodeCCode
T- 41231/REGULAR/04129341231REGULAR041293

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:54:40