![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Программисты, помогите пожалуйста советом. Надо придумать алгоритм, который усекал бы строки следующим образом.
Например, у нас есть десяток строчек ааааа ббббб вввввв ::: гггг ааааа ддддд ааааа ааааа ЖЖЖ вылылжд ::: ---- оалвоалд ............................................................. ааааа::::оадвоалды мне надо получить эти строчки без ааааа. Т.е. обрезать одинаковую последовательность символов (только сначала, из середины и конца не надо). Самое плохое что этих строк много. Это сообщение отредактировал(а) s_a_s_h_a - 24.8.2004, 17:27 |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
Может так??? |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Нет, похоже имелось в виду, что надо удалять любую последовательность одинаковых символов из начала.
|
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
HalkaR :-)))))))))))
Так ты удалишь ВСЮ строку!!! :-)))))) Читаем регэксп: от начала строки (^) любой символ (.) повторяющийся 1 и более раз (+?)... :-))))) Это выражение соответствует всей строке! |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
HalkaR
тут нужны обратные сслылки: /(.)(\\1)+/\\1/gi если я синтаксис не забыл |
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Может такой вариант подойдёт?
или так:
Это сообщение отредактировал(а) korob2001 - 24.8.2004, 22:32 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Secandr |
|
||||||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
korob2001
А мочему [a-zA-ZА-Яа-я]? А если я напишу так
И почему бы не использовать модификатор g - что бы за раз делать все возможные замены? Я бы так сделал:
{заменить все повторяющиеся символы одним} Добавлено @ 08:19 Перечитал пост, понял, нужно только из начала и один раз Добавлено @ 08:21 Если ааааа - определёной длинны, то можно просто:
|
||||||
|
|||||||
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Всем спасибо за ответы, но я наверное плохо объяснил. Попытаюсь еще раз.
1) у нас есть несколько строк. 2) каждая строка - произвольный набор символов. 3) надо определить встречается ли в каждой из этих строк одна и та же последовательность символов и если да, то удалить ее из каждой строки. |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
Объясняешь ты не ахти...
Тебе нужно следующее: 1. прочитать файл построчно 2. для каждой строки найти символы до пробела $line=~m/^([^ ]+)[ ]/ 3. Если это первая строка запомнить $1 в $first, иначе сравнить $1 и $first 4. Если $1 и $first не совпали, значит не все строки начинаются с одинаковых символов, выходим из цикла и ставим флаг $no=1; 5. После окончания цикла проверяем $no==1, если нет, то читаем весь файл и выризаем первые символы. Добавлено @ 09:32 я правильно понял? |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
GoodBoy , и правда глючу
Имелось в виду
|
|||
|
||||
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Secandr, почти. Только вот не до пробела. Пример:
1) Название сайта :: раздел :: подраздел 1 .................................................................. Название сайта :: раздел :: подраздел N результат должен быть: подраздел 1 .................... подраздел N 2) а может быть так: Название сайта -- раздел 1 .................................................................. Название сайта -- раздел N результат должен быть раздел 1 .................... раздел N и т.п. Т.е. разделители неизвестны. Это сообщение отредактировал(а) s_a_s_h_a - 25.8.2004, 09:49 |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
если ничего не известно, то сделать ничего нельзя.
Тут нужны допущения: + пусть название "раздел 1" содержит пробелы, буквы и цифры тогда
a-zA-Zа-яА-Я0-9 - сюда нужно добавить все не разделители. Добавлено @ 09:54 или разделитель -это любой символ повторяющийся два раза, .... нужно определиться что есть разделитель, вернее чем он может быть. |
|||
|
||||
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Secandr, строки, которые мне нужно разобрать - это то, что получено из HTML-страниц, а именно: из тега <title>. У каждого создателя сайта свой вкус и стиль, так что я не могу представить все варианты разделителей, которые могут быть. В общем, это трабл?
Есть вариант - сравнить первые символы, потом вторые и т.д., но боюсь представить себе сколько будет работать скрипт! |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
HalkaR, ну опять же...
(.+?) эта последовательность означает 1 и более повторов ЛЮБЫХ символов!!!!!!! Т. е. это соответствует как "аааааа", так и "дывшгардловпрппысоваы" и даже "96и 96ывпаан п9ы7нвапм ргывплрывп лфор"... |
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
s_a_s_h_a Тебе нужна система с "искуственым интелектом", тут простой выборкой не обойтись.
|
|||
|
||||
| s_a_s_h_a |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 20.7.2004 Где: Петрозаводск Репутация: нет Всего: 1 |
Secandr
Эх. Придется Пролог подключать |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
GoodBoy , да я знаю. Поэтому я и не говорю, что это решение.
|
|||
|
||||
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
s_a_s_h_a - писал что нужно удалять одинаковые последовательности только в начале строки. Потому я не использовал модификатор g
Я думал чел сам сможет добавить все необходимые символы. Это сообщение отредактировал(а) korob2001 - 25.8.2004, 12:30 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 1 Всего: 39 |
korob2001
я не внимательно пост прочёл, в итоге человеку совсем другое нужно |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А я твой не внимательно прочёл, ты внизу добавил. ;) -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |