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