Есть набор строк:
355 | 45 | fgfg | 344 | dd | 868 | 86 | 46 | dg | Как вырезать что между
Писал:
(?:(
[0-9]{1,4}<\\/td>){1,4})(?: | )([\\S]{1,4})(?:<\\/B><\\/td>) что то не получается
Как задавать сложные условия выбора например как сказать на языке рэгов: может идти или Можна ли создавать варианты очень большие по обьему?
« Последнее редактирование: 28 Марта 2004, 11:06:57 от Yukko »
Записан
ffg
« Ответ #1 : 27 Марта 2004, 15:41:44 »
Bardel: Как вырезать что между / ([^<>]+?)/
Записан
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )
« Ответ #2 : 28 Марта 2004, 11:02:37 »
Макс Если ты ограничиваешь РВ слешами, то наверное, слеш внутри надо проескейпить: <\\/b> иначе нарвешься на предупреждение:
Warning: Unknown modifier \'b\' in ... и вопросительный знак после плюса абсолютно лишний! Посмотри сам на РВ и поймешь почему.
Записан
работа в Украине
« Ответ #3 : 28 Марта 2004, 11:06:43 »
Bardel и другие отключайте пожалуйста смайлики в форме отправки сообщения, чтобы люди не гадали, что там написано...
Записан
работа в Украине
« Ответ #4 : 30 Марта 2004, 10:15:30 »
Извините, я кажется не совсем правильно сформулировал задачу: строки такого типа: Эта инфа мне нужна | И эта инфа мне ужна | Нет355 | Нет45 | Да fgfg | Эта инфа мне нужна | И эта инфа мне ужна | Нет344 | Да dd | Эта инфа мне нужна | И эта инфа мне ужна | НЕТ868 | НЕТ86 | НЕТ46 | Да dg | Писал: /(?: )(([\\S\\s]{1,20})(?:<\\/td> | )([\\S\\s]{1,20})(?:<\\/td>)(? | [0-9]{1,3}<\\/td>){1,4})(?: | )([\\S]{1,4})(?:<\\/B><\\/td>)
В итоге я должен получить такие строки: Эта инфа мне нужна И эта инфа мне ужна Да fgfg Эта инфа мне нужна И эта инфа мне ужна Да dd Эта инфа мне нужна И эта инфа мне ужна Да dg
Тоесть - /([^<>]+?)/ это не совсем то что надо. В моей ситуации тэгов | Нет | , может быть от одного до 5, тоесть не подойдет и такой такой код : ...то что мне надо...(?:[\\s\\S]{1,30})(?: | )([\\S]{1,4}).........
Записан
ffg
« Ответ #5 : 30 Марта 2004, 10:48:59 »
Bardel ты бы сформулировал нормально задачу, чтобы можно было что-то понять. ты дай это кому-то прочитать, если это кто-то поймет, то он герой!
Записан
Не ходите, дети, без «Мозиллы» дальше localhost!
« Ответ #6 : 30 Марта 2004, 11:33:26 »
Bardel: то что мне надо...(?:[\\s\\S]{1,30})(?: )([\\S]{1,4})......... т.е. ты уже свою задачу решил?
Записан
работа в Украине
« Ответ #7 : 30 Марта 2004, 15:46:42 »
Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее.
Записан
Не ходите, дети, без «Мозиллы» дальше localhost!
« Ответ #8 : 31 Марта 2004, 10:25:22 »
Давайте я екще раз опишу задачу: есть файл с таблицами 3х типов(4 ячейки, 6ячеек, 8 ячеек) нужно вырезать первые 2 ячейки и последнюю. Как это сделать 1 регулярным выражением Ниже привожу таблицы: Таблица1: Таблица2:
Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 |
Таблица3:
Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 | Pole7 | Pole8 |
Все ячейки могут содержать как символы так и цифры. Вот такая задача Bardel, ты лучше расскажи зачем тебе это делать? это куда интереснее. Я хочу вырезать всю информацию по букмекерской линии сайта zebrabet.com(коэфициенты)
Записан
ffg
« Ответ #9 : 31 Марта 2004, 11:54:02 »
Bardel: Как это сделать 1 регулярным выражением Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать.
Записан
Не ходите, дети, без «Мозиллы» дальше localhost!
« Ответ #10 : 31 Марта 2004, 14:55:02 »
Попробуй сделать это сначана тремя выражениями, а потом будешь оптимизировать. Это я знаю 1. /(?: )([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,20} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
2. /(?:)([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,40} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
3. /(?:)([\\S]{1,4})(?:\\/td> | )([\\S]{1,4})(?:[\\S\\s]{1,60} | )([\\S]{1,4})(?:<\\/B><\\td><\\tr>)/
Какк эти з выражения заменить одним?
Записан
ffg
« Ответ #11 : 31 Марта 2004, 15:24:47 »
Тоесть по сути можна обойтись и 3 вариантом, но как сделать по другому чтобы конкретно не привязываться к [\\S\\s]{1,60}. Меня интерисует именно это
Записан
ffg
« Ответ #12 : 31 Марта 2004, 16:19:28 »
Вариант решения на Perl...
$s= "Pole1 | Pole2 | Pole3 | Pole4 | Pole5 | Pole6 | Pole7 | Pole8 | ";
@ar = $s =~ m!(?:)?(\\S+?)(?:)? | !ig;
#результат $,=" "; print @ar[0,1,-1];
Записан
[ основной браузер когда-то был, теперь попробуй разберись =]
| | | | | |
|