如何在 pyspark 中使用多个正则表达式组?

How to use multiple regex groups in pyspark?

我想在两个正则表达式组之间插入一个符号。

我的代码如下:

df = spark.createDataFrame([('ab',)], ['str'])
df = df.select(
  concat(
    regexp_extract('str', r'(\w)(\w)', 1),  # extract the first group
    lit(' '),                               # add symbol
    regexp_extract('str', r'(\w)(\w)', 2)   # add the second group
  ).alias('d')).collect()
print(df)

有没有更好的方法?

您可以将 regexp_replace 与捕获组一起使用:

import pyspark.sql.functions as F

df.select(F.regexp_replace('str', r'(\w)(\w)', ' ').alias('d')).show()
+---+
|  d|
+---+
|a b|
+---+