imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 31.01.2007, 02:08     # 21
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Question

Можно ли как то искать шаблон до определенной строки ?
Например, есть строка:

PHP код:
/( [0-9]+:[0-9]+)   $/ 
ее нужно искать пока не встретиться строка:

PHP код:
---- ---- ---- ... и т.д
StasK вне форума  
Старый 31.01.2007, 12:52     # 22
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
По моему, там нет такой логики
Цитата:
Сообщение от StasK Посмотреть сообщение
пока не встретиться строка
Регулярное выражение ищет всё подряд.
EvroStandart вне форума  
Старый 31.01.2007, 20:04     # 23
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
StasK, почему нет:
PHP код:
/( [0-9]+:[0-9]+)   $.*?---- ---- ----/ms 
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 02.02.2007, 00:06     # 24
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
а между ???

PHP код:
---- ---- ---- ... и т.д.
кусок для поиска
---- ---- ---- ... и т.д
StasK вне форума  
Старый 02.02.2007, 15:48     # 25
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Ну и между:
PHP код:
/---- ---- ----(.*?( [0-9]+:[0-9]+)   $.*?)+---- ---- ----/ms 
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 02.02.2007, 23:31     # 26
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Это работает только если есть единственное появление "кусок для поиска" внутри "блока". А найти второе появление искомого текста внутри такого "блока" практически никак
crawler вне форума  
Старый 03.02.2007, 01:36     # 27
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
как раз и нужно искать столько "кусков для поиска" сколько встретиться.
StasK вне форума  
Старый 03.02.2007, 12:25     # 28
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от StasK Посмотреть сообщение
как раз и нужно искать столько "кусков для поиска" сколько встретиться.
Да, так последний будет захвачен. Я думаю в подобной задаче, лучше текст на куски разбить другими средствами, тем же explode и не мчаться.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 03.03.2007, 22:05     # 29
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Еще одно выражение

Еще одно выражение:

PHP код:
/$.*?===[0-9].*?===$  $  $/[

или что бы понятнее:

/$                             
// символ прогона страницы
.*?===[0-9].*?===$     // любые символы, затем ===, какое-то число и снова ===
  
$                             // два пробела
  
$/                            // два пробела 
Задача: вырезать каждую последовательность этих строк.
НО: не работает, а если оставить какую-нибудь одну строку, то пожалуйста

Как это победить ?

Последний раз редактировалось StasK; 03.03.2007 в 22:09.
StasK вне форума  
Старый 11.03.2007, 14:19     # 30
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Собсно кто вам сказал что '$' - это прогон страницы ? Попробуй заменить на "\n"
crawler вне форума  
Старый 12.03.2007, 08:49     # 31
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от StasK Посмотреть сообщение
НО: не работает, а если оставить какую-нибудь одну строку, то пожалуйста
А модификаторы multiline стоят??

Приведите конкретнее пример - пример текста, пример работы с ним, что делаете и какие ошибки получаете. Тогда уже можно будет что-то конкретно сказать. На каком языке-то это вообще?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 13.03.2007, 22:15     # 32
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Цитата:
Сообщение от Hubbitus
Приведите конкретнее пример - пример текста
PHP код:
*    (символ прогона страницы не отображается здесь)
.............................................===
2===
..  
.. 
Поясню:
1-я строка - символ прогона страницы
2-я строка - куча пробелов, затем ===(тут какое-то число)===
3-я строка - два пробела
4-я строка - два пробела

до и после этого куска идет список: Номер пункта и наименование
таких "кусков" около 1500 шт. (и убирать их ручками долговато)

Цитата:
Сообщение от Hubbitus
пример работы с ним
пробовал так ($ - вроде как конец строки):
PHP код:
/$.*?===[0-9].*?===$  $  $/ 
Цитата:
Сообщение от Hubbitus
что делаете и какие ошибки получаете. Тогда уже можно будет что-то конкретно сказать. На каком языке-то это вообще?
язык: АWК
результат: пусто
оставляю какое-нибудь одно условие: работает
StasK вне форума  
Старый 14.03.2007, 00:23     # 33
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Ой, а мне можно тоже спросить, если у вас такая тема интересная. Уже замучался.
"Куча слов (\S+\.?\S*|\.\S+) \[\d+\]";
Прекрасно ловит фразу:

"Куча слов слово [5]" (без кавычек)

Но не видит фразу:
"Куча слов еще слово [5]"

Как сделать так, чтобы между "Куча слов " и "[5]" ловилось все, там может стоять фраза любой длины (ну порядка 20 символов) из латиницы и цифр.
Спасибо.

Добавил:
'@(Куча слов )?([^/[]+)@'
дает в [2]м результате нужное, но только если перед фразой ничего не стоит.
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай

Последний раз редактировалось Melkor; 14.03.2007 в 01:58. Причина: добавил малость.
Melkor вне форума  
Старый 14.03.2007, 12:20     # 34
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Melkor,
Цитата:
Но не видит фразу: "Куча слов еще слово [5]"
(\S+\.?\S*|\.\S+)
- тут же нет пробелов, вот 2 слова и не ловятся, только одно

примерно так ?
"Куча слов ([ \w]+) \[\d+\]"
А если ты хотел 2 слова, то \S+\s+\S+

StasK, "$" - это окончание строки. На одной строке может быть только 1 КОНЕЦ и уж никак не 4. Тем более что ты хочешь работать с многостроковым текстом.
"символ прогона страницы" это символ FormFeed ASCII code 12?
Цитата:
оставляю какое-нибудь одно условие: работает
ясно что на 1 строку и работает.
попробуй
/\n.*?===[0-9].*?===\n \n \n/

Последний раз редактировалось crawler; 14.03.2007 в 12:32.
crawler вне форума  
Старый 14.03.2007, 20:14     # 35
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Цитата:
Сообщение от crawler Посмотреть сообщение
"$" - это окончание строки. На одной строке может быть только 1 КОНЕЦ и уж никак не 4.
понятно

Цитата:
Сообщение от crawler Посмотреть сообщение
"символ прогона страницы" это символ FormFeed ASCII code 12?
да

Цитата:
Сообщение от crawler Посмотреть сообщение
попробуй
/\n.*?===[0-9].*?===\n \n \n/
результат - пусто
StasK вне форума  
Старый 15.03.2007, 11:59     # 36
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
FormFeed ASCII code 12 обозначается "\f"
awk вообще-то работает построчно. чтобы его заставить работать с несколькими строками нужно менять RS и FS

Последний раз редактировалось crawler; 15.03.2007 в 12:29.
crawler вне форума  
Старый 15.03.2007, 20:34     # 37
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Цитата:
Сообщение от crawler Посмотреть сообщение
FormFeed ASCII code 12 обозначается "\f"
понятно

Цитата:
Сообщение от crawler Посмотреть сообщение
awk вообще-то работает построчно. чтобы его заставить работать с несколькими строками нужно менять RS и FS
как это сделать?
StasK вне форума  
Старый 16.03.2007, 15:55     # 38
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
http://www.gnu.org/software/gawk/man...iple-Line.html
http://www.skywayradio.com/tech/awk/index.html
crawler вне форума  
Старый 20.03.2007, 00:20     # 39
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от StasK Посмотреть сообщение
как это сделать?
Приблизительно вот так:
Код:
BEGIN {
RS="\f +===[0-9]===\n  \n  \n"
}

{ print $0 }
Ну и исходя из приведенного Вами примера, пробовал на таком вот файле (единственное, символа \f ставить не стал). Работающий пример на gawk в аттаче.
Вложения
Тип файла: zip gawk_test.zip (427 байт, 3 просмотров - Кто скачивал? )
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 21.03.2007, 21:05     # 40
StasK
Newbie
 
Аватар для StasK
 
Регистрация: 15.07.2003
Адрес: Украина
Сообщения: 38

StasK Нуль без палочки
Цитата:
Сообщение от Hubbitus Посмотреть сообщение
Приблизительно вот так:
спасибо!!!

а теперь: как вырезать это все ???
т.е. что бы текст, который был после этого, стал сразу за текстом который был перед блоком без пустых строк ?
такое возможно?

Последний раз редактировалось StasK; 21.03.2007 в 21:09.
StasK вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:55.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.