在Spark SQL regexp_replace中使用\ P {C}

问题描述 投票:0回答:1

我理解\ P {C}表示“不可见的控制字符和未使用的代码点”https://www.regular-expressions.info/unicode.html

当我这样做时,(在数据砖笔记本中)可以正常工作:

%sql
SELECT regexp_replace('abcd', '\\P{C}', 'x')

但是以下操作失败(%python和%scala):

%python 
s = "SELECT regexp_replace('abcd', '\\P{C}', 'x')"
display(spark.sql(s))

java.util.regex.PatternSyntaxException: Illegal repetition near index 0
P{C}
^

SQL命令在HIVE中也可以正常工作。我也尝试按照建议的here转义花括号,但没有用。

还有其他我想念的东西吗?谢谢。

regex apache-spark unicode apache-spark-sql regexp-replace
1个回答
0
投票

尝试添加4 反斜杠

spark.sql("SELECT regexp_replace('abcd', '\\\\P{C}', 'x')").show()
//+------------------------------+
//|regexp_replace(abcd, \P{C}, x)|
//+------------------------------+
//|                          xxxx|
//+------------------------------+
© www.soinside.com 2019 - 2024. All rights reserved.