悬挂元字符 * sparksql

Dangling metacharacter * sparksql

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

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

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

我也尝试用 \* 转义 * 但它仍然抛出 dangling metacharacter * at index 3.

您可以使用

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

参见regex demo

正则表达式详细信息:

  • ^ - 字符串开头
  • (.*) - Capturing group 1 (this group value is referred to with </code> <a href="https://www.regular-expressions.info/replacebackref.html" rel="nofollow noreferrer"><strong>replacement backreference</strong></a> 在替换模式中):除换行字符外的任何零个或多个字符,尽可能多(行的其余部分)</li> <li><code>[|]{2} - 双管(|| 字符串)
  • .* - 该行的其余部分
  • $ - 字符串结尾。

这对我有用:

regexp_replace("***", "\\*", "a")