我试图在Spark SQL中找到一个正则表达式,以确定一个字符串是否包含两个或更多连续的特殊字符,而无需任何硬编码。我能够做到这一点,但有regex的硬编码。如果我有这样的组合的话,这是行不通的。rlike(Column_name,'/.*!!.*|.*@@.*|.*##.*|.*$$.*|.*%%.*|.*\\^\\^.*|.*&&.*|.*\\*\\*.*|.*((.*|.*)).*|.*--.*|.*__.*|.*\\+\\+.*|.*==.*|.*\\{\\{.*|.*[[.*|.*]].*|.*\\}\\}.*|.*\\.*|.*||.*|.*::.*|.*;;.*|.*"".*|.*,,.*|.*<<.*|.*>>.*|.*...*|.*\\?\\?.*|.*\/\/.*|.*- -.*/gm')
显然,这是在我们知道可能出现的连续字符列表时编写的。但是我们现在有一个情况,组合可以是任何东西。有没有一种方法可以在没有任何硬编码的情况下获得这种动态?
特殊特性:除a-zA-Z 0 -9以外的任何字符
1条答案
按热度按时间jum4pzuy1#
正如@markalex在评论中建议的那样,
([^a-zA-Z0-9])\1
将完成这项工作。[^a-zA-Z 0 -9]->匹配单个特殊字符
\1->与第一个捕获组匹配相同的文本
查看here