Это больше общий вопрос о регулярных выражениях, чем специфичный для PHP.
Мне даны разные строки, которые могут выглядеть следующим образом:
A/B/PA ID U/C/D
И я пытаюсь извлечь сегмент в середине косой черты с пробелами ("/ PA ID U"), используя:
preg_match('/(\/PA .+)(\/.+|$)/', '', $matches);
Однако вместо того, чтобы получать "/ PA ID U", как я ожидал, я получал "/ PA ID U / C / D".
Как я могу сделать так, чтобы это соответствовало "/.+" над "$" в этой последней группе?
Дополнительные примечания:
Мне нужно, чтобы последняя группа соответствовала либо другому "/ somethingsomthing", либо "", потому что строка сильно различается. Если я сопоставлю только «/ .+», я не смогу получить «/ PA ID U», если он находится в конце строки, например, в «A / B / PA ID U».
По сути, мне нужно иметь возможность извлекать определенные сегменты, например, так:
Дано: "A/B/PA ID U/PA ID U/C/D"
Выписка: (A), (B), (PA ID U), (PA ID U), (C), (D)
[UPDATE]
Я пытаюсь избежать использования split () или explode (), потому что это будет означать, что я должен сопоставить шаблон "PA ID U" отдельно. Помимо простого извлечения сегментов, разделенных косой чертой, мне нужно проверить, что подстроки соответствуют определенным шаблонам.