正则表达式,在SQL中替换2个或更多连续的相同字符

时间:2016-03-09 10:28:29

标签: sql regex apache-spark hive

使用正则表达式时,我想仅将此字符的一次出现替换为2个或更多个连续的相同字符。 例如:eeee => ë

我想通过regexp_replace函数在配置单元中实现这一点。

我试过了:

regexp_replace("aaeebb", "(.)\\1{1,}", "\\1")

使用gsub R函数但不使用regexp_replace

1 个答案:

答案 0 :(得分:1)

Scala的:

  • 原始SQL

    sqlContext.sql("""SELECT regexp_replace('aaeebb', '(.)\\1+', '$1')""")
    
  • DSL

      
    df.select(regexp_replace(lit("aaeebb"), "(.)\\1+", "$1"))
    

PySpark:

  • 原始SQL

    sqlContext.sql("""SELECT regexp_replace('aaeebb', '(.)\\\\1+', '$1')""")
    # or
    sqlContext.sql(r"""SELECT regexp_replace('aaeebb', '(.)\\1+', '$1')""").show()
    
  • DSL

    df.select(regexp_replace(lit("aaeebb"), "(.)\\1+", "$1"))
    

Spark SQL shell:

SELECT regexp_replace('aaeebb', '(.)\\1+', '$1');

Hive shell:

SELECT regexp_replace('aaeebb', '(.)\\1+', '$1');