悬挂元字符 * 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")
下面的正则表达式在 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")