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|
+-----------+-------+
这是您要找的吗?
我正在尝试使用 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|
+-----------+-------+
这是您要找的吗?