preg match удалить захваченный в предыдущей группе - PullRequest
1 голос
/ 19 июня 2019

Мне нужно разбить строки на части. Совпадающие шаблоны не должны присутствовать в других сопоставленных группах. Пример строки:

baranything
baranythingbaz

Ожидаемый результат:

array(
    0 => baranything
    1 => bar
    2 => anything
    3 =>
)
array(
    0 => baranything
    1 => bar
    2 => anything
    3 => baz
)

Самое простое решение может быть похоже на (bar)(.*)(baz|), но оно помещает всю оставшуюся строку в элемент [2] и «baz» не захватывается.

1 Ответ

1 голос
/ 19 июня 2019

Вы можете использовать

^(bar)(.*?)(baz|$)

См. Демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

Подробности

  • ^ - начало строки
    • (bar) - группа 1: bar
    • (.*?) - Группа 2: любые 0+ символов, кроме символов разрыва строки, как можно меньше
    • (baz|$) - либо baz, либо конец строки.
...