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

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 или вобще может другой какой выход предложите? Можно даже без регулярных выражений и использующих их функций, главное результат. Заранее спасибо помогающим!
 

Mantis

Новичок
Нужно сделать парсер для определенного вида документов.
 

Mantis

Новичок
denver это и есть реальный пример.

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

Вобщем решил сделать вкривую. Нужен один всего-лиш совет:
как описать в шаблоне "любые символы кроме слова XXX"?
Пробовал даже придумать всякое разное -
(^XXX) или [^X]+[^X]+[^X]+ вобщем будет сдвиг во фазе.
 

avenger_msoft

Новичок
Попробуй так:
PHP:
((?:?!(XXX1|XXX2|XXX3)).)*)
Любые символы, кроме слов XXX1, XXX2, XXX3
 

john.brown

просто кулибин
А что, /1111.+?55555 66/i не помогает? Жадность то ограничивать надо :)
 

Mantis

Новичок
Marquis, но вдруг попадется в буквах ooooooo или uuuuuuuuuu слово 55555 66, тогда неправильно порежет. Всеравно всем спасибо за помощь, с задачей уже справился давно(заложил все символы в тексте в массив и обработал сложным перебором).
 
Сверху