【问题标题】:Spark SQL - Regex for matching only numbersSpark SQL - 仅匹配数字的正则表达式
【发布时间】:2020-05-25 15:23:58
【问题描述】:
我试图确保数据框中的特定列不包含任何非法值(非数字数据)。为此,我尝试使用使用rlike 的正则表达式匹配来收集数据中的非法值:
我需要使用字符串字符或空格或逗号或任何其他不同于数字的字符来收集值。我试过了:
spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()
但这不起作用。它产生 0 行。
感谢任何帮助。谢谢。
【问题讨论】:
标签:
regex
dataframe
apache-spark
pyspark
apache-spark-sql
【解决方案1】:
rlike 正在寻找字符串中的任何匹配项。星号 (*) 表示 0 或多个。
字符串中某处的零数字适用于每个可能的字符串。
您需要指定要从开头^ 到字符串结尾$ 匹配
spark.sql("select * from tabl where UPC not rlike '^[0-9]*$'").show()
或者,您也可以匹配字符串[^0-9]中的任何单个非数字字符
spark.sql("select * from tabl where UPC rlike '[^0-9]'").show()