У меня есть следующая функция:
val Reg52 = """(?<!\S)(?!(?:[\d.]*\d){6})[0-9]{1,5}(?:\.[0-9]{1,2})?(?!\S)""".r
def verif_rg52 = udf((s: String) =>
s match {
case null => 0
case Reg52(item, _*) => 0
case _ => 1
})
Он должен проверить, содержит ли столбец данных кадр чисел в формате (5,2) -> максимум 5 цифр с максимум 2 после точки. Я протестировал регулярное выражение , и оно работает.
Но когда я пробую его в Scala:
val df1 = Seq(
"22.0",
"1000.22"
).toDF("id")
df1.withColumn("r", when(verif_rg52(col("id")) === 0 , "0").otherwise("1")).show(false)
, я получаю
+-------+---+
|id |r |
+-------+---+
|22.0 |1 |
|1000.22|1 |
+-------+---+
Но я должен получить 0, когда id = 22.0, потому что он уважает регулярное выражение. Любая помощь? Спасибо