Skip to content

regexp_extract_all(col, pattern)

Описание

Функция regexp_extract_all() извлекает все подстроки, соответствующие регулярному выражению, и возвращает их в виде массива.

Параметры

  • col: Column - столбец со строками для извлечения
  • pattern: String - регулярное выражение для извлечения подстрок

Возвращаемое значение

Array[String] - массив всех найденных подстрок

Пример использования

from pyspark.sql.functions import regexp_extract_all
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("regexp_extract_all_example").getOrCreate()

# Создаем DataFrame
data = [
    ("email1@example.com, email2@test.com"),
    ("no emails here"),
    ("contact@domain.com; support@domain.com")
]
df = spark.createDataFrame(data, ["text"])

# Извлекаем все email-адреса
result = df.select(
    "text",
    regexp_extract_all("text", "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}").alias("emails")
).show()

# Результат:
# +----------------------------------+----------------------------------+
# |text                              |emails                            |
# +----------------------------------+----------------------------------+
# |email1@example.com, email2@test.com|[email1@example.com, email2@test.com]|
# |no emails here                    |[]                                |
# |contact@domain.com; support@domain.com|[contact@domain.com, support@domain.com]|
# +----------------------------------+----------------------------------+

Примечания

  • Функция чувствительна к регистру
  • NULL значения возвращают NULL
  • Если совпадений не найдено, возвращается пустой массив
  • Для извлечения одной подстроки используйте regexp_extract()
  • Для проверки соответствия регулярному выражению используйте regexp_like()