【问题标题】:Regular expression, replace 2 or more consecutive identical characters in SQL正则表达式,替换SQL中2个或多个连续相同的字符
【发布时间】:2016-06-23 16:08:49
【问题描述】:

使用正则表达式,我想用这个字符的一次出现替换 2 个或多个连续的相同字符。 例如:eeee => e

我想通过 regexp_replace 函数在 hive 中实现。

我试过了:

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

使用 gsub R 函数但不使用 regexp_replace

【问题讨论】:

    标签: sql regex apache-spark hive


    【解决方案1】:

    斯卡拉:

    • 原始 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 外壳:

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

    蜂巢壳:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      相关资源
      最近更新 更多