regexp_substr(col, pattern, pos, occurrence)
Описание
Функция regexp_substr()
извлекает подстроку, соответствующую регулярному выражению, начиная с указанной позиции и с указанным номером вхождения.
Параметры
col
: Column - столбец со строками для извлеченияpattern
: String - регулярное выражение для извлечения подстрокиpos
: Integer (опционально) - начальная позиция поиска (по умолчанию 1)occurrence
: Integer (опционально) - номер вхождения для извлечения (по умолчанию 1)
Возвращаемое значение
String - найденная подстрока или NULL, если совпадение не найдено
Пример использования
from pyspark.sql.functions import regexp_substr
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("regexp_substr_example").getOrCreate()
# Создаем DataFrame
data = [
("John Doe (123) 456-7890"),
("Jane Smith (456) 789-0123"),
("No phone number")
]
df = spark.createDataFrame(data, ["text"])
# Извлекаем номер телефона
result = df.select(
"text",
regexp_substr("text", "\\(\\d{3}\\) \\d{3}-\\d{4}").alias("phone")
).show()
# Результат:
# +------------------------+---------------+
# |text |phone |
# +------------------------+---------------+
# |John Doe (123) 456-7890|(123) 456-7890 |
# |Jane Smith (456) 789-0123|(456) 789-0123 |
# |No phone number |null |
# +------------------------+---------------+
Примечания
- Функция чувствительна к регистру
- NULL значения возвращают NULL
- Если совпадение не найдено, возвращается NULL
- Для извлечения всех подстрок используйте
regexp_extract_all()
- Для проверки соответствия регулярному выражению используйте
regexp_like()