Skip to content

regexp_instr(col, pattern, pos, occurrence)

Описание

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

Параметры

  • col: Column - столбец со строками для поиска
  • pattern: String - регулярное выражение для поиска
  • pos: Integer (опционально) - начальная позиция поиска (по умолчанию 1)
  • occurrence: Integer (опционально) - номер вхождения для поиска (по умолчанию 1)

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

Integer - позиция найденного вхождения или 0, если совпадение не найдено

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

from pyspark.sql.functions import regexp_instr
from pyspark.sql import SparkSession

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

# Создаем DataFrame
data = [
    ("hello world hello"),
    ("spark is awesome"),
    ("hello hello hello")
]
df = spark.createDataFrame(data, ["text"])

# Находим позицию второго вхождения слова "hello"
result = df.select(
    "text",
    regexp_instr("text", "hello", 1, 2).alias("second_hello_pos")
).show()

# Результат:
# +------------------+----------------+
# |text              |second_hello_pos|
# +------------------+----------------+
# |hello world hello |13             |
# |spark is awesome  |0              |
# |hello hello hello |7              |
# +------------------+----------------+

Примечания

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