我理解\ 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转义花括号,但没有用。
还有其他我想念的东西吗?谢谢。
尝试添加4
反斜杠:
spark.sql("SELECT regexp_replace('abcd', '\\\\P{C}', 'x')").show()
//+------------------------------+
//|regexp_replace(abcd, \P{C}, x)|
//+------------------------------+
//| xxxx|
//+------------------------------+