У меня есть длинная строка, содержащая алфавитные слова, каждая из которых разделена одним символом ";" . Вся строка также начинается и заканчивается символом ";" .
Как подсчитать количество вхождений шаблона (начинается с «;»), если индекс успешного совпадения делится на 5.
Пример:
$String = ";the;fox;jumped;over;the;dog;the;duck;and;the;frog;"
$Pattern = ";the(?=;f)"
ВЫХОД: 1
С:
Примечание 1: В приведенном выше случае $Pattern ;the(?=;f)
существует как 1-е и 10-е слова в $String
; тем не мение; выходным результатом будет 1, так как только индекс второго совпадения (10) делится на 5.
Примечание 2: каждое слово, разделенное знаком ";" учитывается в наборе индексов.
Index of the = 1 -> this does not match since 1 is not divisible by 5
Index of fox = 2
Index of jumped = 3
Index of over = 4
Index of the = 5 -> this does not match since the next word (dog) starts with "d" not "f"
Index of dog = 6
Index of the = 7 -> this does not match since 7 is not divisible by 5
Index of duck = 8
Index of and = 9
Index of the = 10 -> this does match since 10 is divisible by 5 and the next word (frog) starts with "f"
Index of frog = 11
Если возможно, мне интересно, есть ли способ сделать это с помощью сопоставления одного шаблона без использования списка или массива, поскольку $String очень длинная.
the;fish
, чтобы продемонстрировать, что вы ищете индексы, делящиеся на 5. Для индексов, не делящихся на 5, вывод будет таким же. - person Patrick J. S.   schedule 17.10.2014pos
или какие-либо группы захвата и${^MATCH}
или что-то подобное? - person Patrick J. S.   schedule 18.10.2014