regex - Spark SQL - 仅匹配数字的正则表达式
问题描述
我试图确保数据框中的特定列不包含任何非法值(非数字数据)。为此,我尝试使用正则表达式匹配rlike
来收集数据中的非法值:
我需要使用字符串字符或空格或逗号或任何其他不同于数字的字符来收集值。我试过了:
spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()
但这不起作用。它产生0行。
任何帮助表示赞赏。谢谢你。
解决方案
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()
推荐阅读
- python - 慢慢打印每件事(模拟打字)
- c# - 我可以在我的 ApplicationLogic 项目(net standard 2.1)中的 MVC(.net core 3.0)项目中使用视图模型吗?
- elasticsearch - (Grafana / Kibana / Elasticsearch)表格按端点显示特定值的计数
- mongodb - 如何在 mongo db 中的一组排序文档中找到元素的索引?
- bash - 在 mac os 中更新 bash
- android - Pjsip Android 中的呼叫转移返回 403 Forbidden
- python - 如何使用 OpenCV 对图像中的像素组进行分组和突出显示?
- perl - 为什么在 Perl 中使用 &getcwd() 而不是 getcwd()?
- go - 为什么在这个函数中使用通道?
- python - 重新查找类别 S 和 P 的错误转义