![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| warlock000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
Привет всем, собственно проблема в следующем, есть некий текст типа:
Бла бла бла бо бо бо буб бу бу 123456789 Бу бу ба бе бу бр кр мр фр 123456789 000111222 5454654165 ла ла ла тра та та ту ту ту 987654321 Бла бла бла бо бо бо буб бу бу 123456789 987654321 000111222 5454654165 Бла бла бла бо бо бо буб бу бу 123456789 000111222 итд Из этого текста нужно взять все числовые значение и сравнить их, тоесть если 123456789 в тексте встречается более 5 раз все строки удаляются, в принцыпе это всё решается регуляркой s/123456789{5,100}//g; но мне нужно сравнить все числа с каждой с этой регуляркой, вчера почитал про хэши но так толком нивчем и не разобрался, если не трудно выложите пример сравнения. З.Ы. Условия должны быть такими, если числа совпадают более 5 раз тогда происходит удаление всех чисел в тексте, и если происходит удоление число это пишется в лог. Заранее благодарен З.З.Ы. Тема отсюда http://forum.vingrad.ru/forum/act-ST/f-183...4/unread-1.html, так как ошибся разделом... |
|||
|
||||
| warlock000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
Есть даже скрипт примерно:
но не понимаю как эту лебуду прикрутить к хешам и сравнивать перебором с регуляркой.... З.Ы. В перле я ещё новичок и только начинаю немного кодить, пожалуйста помогите)) Это сообщение отредактировал(а) warlock000 - 26.8.2011, 10:05 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
Если файл легко помещается в памяти то там его и держите в виде массива строк, как я понял имеенно строки и надо удалять, хотя тоже не все понятно, в строках встречается несколько чисел, как быть с теми, которые не повторяются больше 5 раз.
Пройдитесь по всему файлу и соберите хеш чисел, регуляркой /\d+/ найдите числа, в хеше держите счетчик и массив с номерами строк где встречаются числа. После этого для чисел у которых счетчик больше 5 удаляйте из файла строки. В любом случае регулярка вида s/123456789{5,100}//g явно не подойдет. |
|||
|
||||
| warlock000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
А немогли бы вы написать небольшой примерчик как это будет выглядить, понять то я понял что вы написали а вот модефицировать скрипт не получится так как знаний нехватает(( Если повторов меньше 5 то они остаются, если больше то удаляются все строки, причем тут просто /\d+/ не обойтись, потому что в строке могут встречатся еще двех / 3х значные числа, типа: текст текст 25,5текст текст 145 текст 123456789 987654321; текст текст 3/5*7 текст текст 11,1 текст 123456789 Это сообщение отредактировал(а) warlock000 - 26.8.2011, 10:27 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
я так понял что числа из 2-3 знаков не считаются?
Это сообщение отредактировал(а) alezzz - 26.8.2011, 11:42 |
|||
|
||||
| warlock000 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 2.8.2011 Репутация: нет Всего: нет |
Огромное спасибо, вы очень помогли!
Это сообщение отредактировал(а) warlock000 - 26.8.2011, 16:37 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |