Spark SQL 无法识别 \d+

Spark SQL not recognizing \d+

我正在尝试使用 regex_extract 函数获取字符串 ABCDF1_123 中的最后三位数字:

regexp_extrach('ABCDF1_123', 'ABCDF1_(\d+)', 1)

而且它没有捕获组。如果我将函数调用更改为:

regexp_extrach('ABCDF1_123', 'ABCDF1_([0-9]+)', 1)

有效。任何人都可以让我了解为什么吗?我还使用 JDBC 连接从 Postgres 数据库中获取数据。

I 运行 regexp_extract 并且它们都给出相同的输出,如下所示


from pyspark.sql import Row
from pyspark.sql.functions import lit, when, col, regexp_extract

l = [('ABCDF1_123')]
rdd = sc.parallelize(l)
sample = rdd.map(lambda x: Row(name=x))
sample_df = sqlContext.createDataFrame(sample)

not_working = r'ABCDF1_(\d+)'
working = r'ABCDF1_([0-9]+)'

sample_df.select(regexp_extract('name',not_working,1).alias('not_working'),
                 regexp_extract('name',working,1).alias('working')).show(10)


+-----------+-------+
|not_working|working|
+-----------+-------+
|        123|    123|
+-----------+-------+

这是您要找的吗?