regex - 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|
+-----------------+----------+
你能帮忙解释一下,我的代码有什么问题吗?谢谢!
解决方案
推荐阅读
- django - 如何将过滤器集成到我的 Django 网站中?
- javascript - 检测在 React 的段落中点击了哪个单词
- python - 如何合并两个熊猫数据框I
- r - 使 DT 表内过滤器响应子集数据
- ruby-on-rails - Rails 表单 - 编辑用户表单
- c# - 在 C# 中为命令提示符创建实时输入和输出流
- function - 在LUA中-在_G中找到“函数”类型的变量如何将参数传递给它
- google-sheets - 尝试将 2 个 Google 表格标签合并为一个
- powershell - 执行 .ps1 文件(不编译)
- java - 如何在单个线程中消耗无限大的 Flux?