首页 > 解决方案 > 悬空元字符 * sparksql

问题描述

下面的正则表达式在 Hive 中有效,但在 Spark 中无效。

它抛出一个错误dangling metacharacter * at index 3

select regexp_extract('a|b||c','^(\\|*(?:(?!\\|\\|\\w(?!\\|\\|)).)*)');

我也尝试过逃跑*\\*但仍然抛出 dangling metacharacter * at index 3.

标签: regexapache-sparkregex-groupregexp-replacemetacharacters

解决方案


您可以使用

regexp_replace(col, '^(.*)[|]{2}.*$', '$1')

请参阅正则表达式演示

正则表达式详细信息

  • ^- 字符串的开始
  • (.*)-捕获组1(此组值在替换模式中通过$1 替换反向引用来引用):除换行符之外的任何零个或多个字符,尽可能多(行的其余部分)
  • [|]{2}- 双管(||串)
  • .*- 线路的其余部分
  • $- 字符串结束。

推荐阅读