首页 > 解决方案 > Spark - 使用 regexp_replace 替换多个组

问题描述

在 Spark 中,我有一个数据框,其中一列的数据格式如下:“ he=1she=2it=3me=4 ”。我想将该列转换为“ 1-2-3-4 ”格式。

val rawDF = Seq(
  ("he=1she=2it=3me=4"),
  ("he=3she=5it=9me=7")
).toDF("raw")

val newDF = rawDF.withColumn("converted",  regexp_replace($"raw", """[\D]*(\d*)[\D]*(\d*)[\D]*(\d*)[\D]*(\d*)""", """$1-$2-$3-$4"""))

然后我得到了最后添加'-'的结果。我不知道为什么会这样。

+-----------------+----------+
|              raw| converted|
+-----------------+----------+
|he=1she=2it=3me=4|1-2-3-4---|
|he=3she=5it=9me=7|3-5-9-7---|
+-----------------+----------+

我的预期结果是

+-----------------+----------+
|              raw| converted|
+-----------------+----------+
|he=1she=2it=3me=4|   1-2-3-4|
|he=3she=5it=9me=7|   3-5-9-7|
+-----------------+----------+

你能帮忙解释一下,我的代码有什么问题吗?谢谢!

标签: regexstringscalaapache-sparkregexp-replace

解决方案


推荐阅读