Как использовать несколько групп регулярных выражений в pyspark?

#regex #apache-spark #pyspark #apache-spark-sql #regex-group

Вопрос:

Я хочу вставить символ между двумя группами регулярных выражений.

Мой код выглядит следующим образом:

 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)
 

Есть ли какой-нибудь лучший способ?

Ответ №1:

Вы можете использовать regexp_replace с группами захвата:

 import pyspark.sql.functions as F

df.select(F.regexp_replace('str', r'(w)(w)', '$1 $2').alias('d')).show()
 --- 
|  d|
 --- 
|a b|
 --- 
 

Комментарии:

1. Спасибо. Я попробовал regexp_replace('str', r'(w)(w)', '1 2') использовать стандартные re маркеры групп, но это не сработало. Где-нибудь задокументировано использование $ in pyspark ?