我可以得到帮助来识别自由格式文本列中的8个数字吗

ttp71kqs  于 2021-05-19  发布在  Spark
关注(0)|答案(1)|浏览(367)

我可以得到帮助来识别自由格式文本列中的8位数字吗
示例-列中的数据如下

[record 1] i love my country 12345678 ^ 2343-000
[record 2] hey bro  what are you doing 123456 ^ 23
[record 3] dear friends  1234-5678 ^ 23400

结果应该是-我只想看到-[record 1]&[record 3]
注意^是分隔符。我正在尝试使用Dataframe。感谢您的帮助

8xiog9wr

8xiog9wr1#

使用 regexp_extract 函数提取数字,然后使用过滤器过滤所需的数据。

scala> df.show(false)
+--------------------------------------------------+
|data                                              |
+--------------------------------------------------+
|[record 1] i love my country 12345678 ^ 2343-000  |
|[record 2] hey bro  what are you doing 123456 ^ 23|
|[record 3] dear friends  1234-5678 ^ 23400        |
+--------------------------------------------------+
scala> df
.withColumn("extracted_digits",regexp_extract($"data","[0-9-]{8}+",0))
.filter(trim($"extracted_digits") =!= "" && $"extracted_digits".isNotNull )
.show(false)
+------------------------------------------------+----------------+
|data                                            |extracted_digits|
+------------------------------------------------+----------------+
|[record 1] i love my country 12345678 ^ 2343-000|12345678        |
|[record 3] dear friends  1234-5678 ^ 23400      |1234-567        |
+------------------------------------------------+----------------+

相关问题