Databricks Spark SQL中的正则表达式



真奇怪。使用Databricks,但是在使用replace_regex功能时得到两种不同的行为

%sql
select upper(regexp_replace('Test (PA) (1234) ', '[(]\d+[)]', '')) as result

返回我的期望:测试(PA)

:

%python    
display(spark.sql("""select upper(regexp_replace('Test (PA) (1234) ', '[(]\d+[)]', '')) as result"""))

的回报:TEST (PA) (1234)

在两个不同的上下文中(spark sql和spark/python/pyspark),这些不应该是等价的吗?为什么第二个上下文不起作用?

您没有考虑字符转义规则。在Python中,您的\被转换为单个,因此您的正则表达式更改为[(]d+[)]。你可以选择:

  • 使用原始字符串r"""select upper(regexp_replace('Test (PA) (1234) ', '[(]\d+[)]', '')) as result"""

  • 双反斜杠:[(]\\d+[)]

通过这些更改,它产生正确的结果

相关内容

  • 没有找到相关文章

最新更新