Spark SQL - 仅匹配数字的正则表达式

Hem*_*nth 5 regex dataframe apache-spark apache-spark-sql pyspark

我试图确保数据框中的特定列不包含任何非法值(非数字数据)。为此,我尝试使用正则表达式匹配rlike来收集数据中的非法值:

在此处输入图片说明

我需要使用字符串字符或空格或逗号或任何其他与数字不同的字符来收集值。我试过:

spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()
Run Code Online (Sandbox Code Playgroud)

但这不起作用。它产生 0 行。

任何帮助表示赞赏。谢谢你。

dre*_*-hh 7

rlike正在寻找字符串中的任何匹配项。星号 (*) 表示 0 或多个。字符串中某处的零数字适用于每个可能的字符串。您需要指定要从^字符串的开头到结尾进行匹配$

spark.sql("select * from tabl where UPC not rlike '^[0-9]*$'").show()
Run Code Online (Sandbox Code Playgroud)

或者,您也可以匹配字符串中的任何单个非数字字符 [^0-9]

spark.sql("select * from tabl where UPC rlike '[^0-9]'").show()
Run Code Online (Sandbox Code Playgroud)