Skip to content

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