Вопрос к регулярным выражениям

  • Автор темы Автор темы Mantis
  • Дата начала Дата начала

Mantis

Новичок
Вопрос к регулярным выражениям

Здравствуйте, у меня проблема c регулярными выражениями.

Все понятно, кроме того, как написать по маске "Выбрать все, кроме слова XXX".
Вобщем строка похожа на:

1111 ooooo oo 55555ooo 55555 66 1111e eeeeeeeeeeeeee e e 55555 661111 uuuuuuuuuuuuuuuuuuuuuuuuu 55555 66

Слова 1111, 55555 и 66 постоянные. Слова из ooo, eee и uuu изменяющиеся, состоящие из любых букв, цифр и символов.

Нужно разбить строку на вот такие подстроки(желательно в массив):

1111 ooooo oo 55555ooo 55555 66
1111e eeeeeeeeeeeeee e e 55555 66
1111 uuuuuuuuuuuuuuuuuuuuuuuuu 55555 66

До поздней ночи драил разную литературу, в итоге решил воспользоваться такой записью:

preg_match_all("/1111XXX55555 66/i", $string, $matches);

Если вставляю вместо XXX .+ выбирается вся строка.
Если вставить что-то вроде выражения "все слова, кроме слова 55555"
, возможно выберутся нужные подстроки, но если вдруг в oooo попадется слово 55555, то крах.


Вобщем с шаблонами у меня беда, может кто подскажет что можно вставить вместо XXX или вобще может другой какой выход предложите? Можно даже без регулярных выражений и использующих их функций, главное результат. Заранее спасибо помогающим!
 
Нужно сделать парсер для определенного вида документов.
 
denver это и есть реальный пример.

AmdY в поиске по "preg_match_all" не нашел ничего подходящего как и по твоей ссылке, обсуждений много похожих, но все не то.

Вобщем решил сделать вкривую. Нужен один всего-лиш совет:
как описать в шаблоне "любые символы кроме слова XXX"?
Пробовал даже придумать всякое разное -
(^XXX) или [^X]+[^X]+[^X]+ вобщем будет сдвиг во фазе.
 
А что, /1111.+?55555 66/i не помогает? Жадность то ограничивать надо :)
 
Marquis, но вдруг попадется в буквах ooooooo или uuuuuuuuuu слово 55555 66, тогда неправильно порежет. Всеравно всем спасибо за помощь, с задачей уже справился давно(заложил все символы в тексте в массив и обработал сложным перебором).
 
Сверху