Мне нужно выполнить поиск по регулярному выражению для строки x в другой строке y, но затем мне нужно знать индекс токена (слова) первого символа попадания после токенизации (разбиения) строки y с использованием некоторого другого регулярного выражения. выражение (например, пробел). Первое регулярное выражение может найти подстроку, поэтому я не могу гарантировать, что оно остановится в начале токена (слова).
Какой будет лучший алгоритм для реализации этого. Простой подход будет следующим:
- Найдите x в y, используя первое регулярное выражение, и получите смещение символа z
- Разбить y на массив элементов, используя второе регулярное выражение
- Прокручивать массив элементов, добавляя длину каждого элемента к переменной LENGTH и добавляя 1 к счетчику COUNTER
- Остановите цикл, когда ДЛИНА больше или равна z
- Индексом токена первого символа попадания будет значение COUNTER
(Предполагается, что функция разделения хранит символы разделения (например, пробелы) в качестве элементов массива, что очень расточительно.
Конкретный (простой) пример. Предположим, я хочу узнать индекс токена (слова) для поиска «ade» в строке «Луна сделана из сыра». Функция должна дать мне ответ: 3 (для нулевых индексированных массивов).
== Edit ==
Алгоритм также должен работать, когда поиск регулярных выражений пересекает границы токенов. Например, он должен снова возвращать индекс «3» при поиске «de of ch» в «Луна сделана из сыра».