Scala中的正则表达式从数据帧列的字符串中删除子字符串

时间:2020-04-01 09:46:10

标签: scala apache-spark

我对scala非常陌生,需要从数据框的列中的字符串中删除子字符串:

所以数据框看起来像:

val someDF = Seq(
  (8, "MAT - bat"),
  (64, "MDT - mouse"),
  (0,   "MAT - abc")
).toDF("number", "word")

并且我需要从单词列中删除“ MAT-”,“ MDT-”,并需要将结果数据帧获取为:

    |number| word|
    +------+-----+
    |     8|  bat|
    |    64|mouse|
    |     0|  abc|
    +------+-----+

有人可以帮我得到这个吗?我只是想借助"\\AM[a-zA-Z]T - "

但是没有任何效果!

1 个答案:

答案 0 :(得分:2)

您只能提取小的导管单词-"[a-z]+"。要么 您可以替换大写字母,空格和“ \”-"[A-Z]+\s+-" or "^M.+T\s-"

scala> someDF.withColumn("word",regexp_replace(col("word"),"[A-Z]+\\s+-",""))
scala> res0.show
+------+------+
|number|  word|
+------+------+
|     8|   bat|
|    64| mouse|
|     0|   abc|
+------+------+