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()