我目前正在处理一个正则表达式,希望可以应用到PySpark数据框的列上。
这个正则表达式仅用于捕获一个组,但可能会返回多个匹配结果。遇到的问题是,似乎PySpark原生的正则表达式函数(regexp_extract和regexp_replace)仅允许进行组操作(通过$操作符)。
是否有一种本地方式(使用PySpark函数而非基于python的re.findall的udf)来获取由我的正则表达式匹配的子字符串列表(并且我不是在谈论第一个匹配中包含的组)?
我希望做到以下这样的效果:
my_regex = '(\w+)'
# Fetch and manipulate the resulting matches, not just the capturing group
df = df.withColumn(df.col_name, regexp_replace('col_name', my_regex, '$1[0] - $2[0]'))
使用 $1 表示数组中的第一个匹配项,以此类推...
您可以尝试以下正则表达式输入,以查看我希望获取的匹配项示例。
2 AVENUE DES LAPINOUS
它应该返回4个不同的匹配项,每个匹配项内有1个组。
$2
?你期望的最终结果是什么? - rock321987func.regexp_extract('col', my_regex, idx=1)
指定匹配索引..你需要编写一个UDF来实现这个功能.. - rock321987