![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Не могли бы вы подсказать, как подсчитать кол-во этих элементов "01 03 0A F0 34" в строке, игнорируя пробелы..
|
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Например, так:
Прошу прощения, корректнее будет уточнить регулярное выражение (два подходящих символа, перед которыми начало строки либо пробел и после которых пробел либо конец строки)
Это сообщение отредактировал(а) amg - 7.11.2007, 13:48 |
||||
|
|||||
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
не могли бы Вы пояснить значение утверждения "?:".."|", как я понял, обеспечивает одновременный учёт всех условий..
Это сообщение отредактировал(а) ma_lover - 7.11.2007, 14:28 |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
|||
|
||||
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
amg,Спасибо большое!
|
|||
|
||||
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Такой вопрос..нужно удалить двойные пробелы из строки, точнее заменить их на одинарные.
Всё было бы просто,если бы не тот факт,что нужно сделать это, начиная с определённой точки. Поэтому простая замена не годится..То есть в той же строке "01 03 0A F0 34"нужно заменить двойные пробелы на одинарные, при условии, что первый двойной пробел находится перед "01" и как раз его трогать не нужно..Пока сделал только так:
но он и первый двойной убивает=( Это сообщение отредактировал(а) ma_lover - 7.11.2007, 17:39 |
|||
|
||||
amg |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
|
||||
|
|||||
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
amg, не понял..чем плох пример?
Дело в том, что в строке могут быть какие угодно комбинации чисел, не обязательно "01". Это сообщение отредактировал(а) ma_lover - 8.11.2007, 10:31 |
|||
|
||||
ma_lover |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
родился вопрос по предыдущему ответу..
каким образом Perl может подсчитать соединения и цифр и букв типа "0A" благодаря выражению "[\dA-F]{2}"? Ведь оно говорит о том, что нужно искать либо символ, либо букву, повторённую дважды..однако сочетания тоже каким-то образом учитываются..
Попробую подробнее..
Код подсчитывает количество "двойных" символов в строке:B4 DA 25 C5 02 40 1A 00 1E 00 01 00 60 01 0A Если учесть, что в [\dA-F]{2}, заключённое в квадратные скобки даёт нам класс символов, то получим, что это выражение должно искать дважды повторённую цифру или букву..Но также нужно учитывать и комбинации цифра-буква и буква-цифра, типа 1E..Судя по результату, это выражение всё же учитывает и комбинации, потому что в счётчике хранится общее количество двойных символов. Вот я бы и хотел уточнить , почему это так, может я чего-то не понимаю. Это сообщение отредактировал(а) ma_lover - 8.11.2007, 11:15 |
||||||
|
|||||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Пример плох тем, что вместо прояснения ситуации он ее еще больше запутывает. И пробовать код на такой строке бессмысленно, т.к. она, судя по условию задачи, не должна измениться. Дай, пожалуйста, несколько своих строк и что из них должно получиться.
PS. Это относится к предыдущему посту Добавлено через 4 минуты и 23 секунды К сожалению, я опять не понял вопрос Это сообщение отредактировал(а) amg - 8.11.2007, 10:53 |
|||
|
||||
ma_lover |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
Вот моя исходная строка:
Начиная,в данном случае, с С5, идут двойные пробелы, которые нужно заменить на одинарные. В то же время весь "заголовок":"14:52:44.230 00 Tx <HDLC 16><Len 40> " трогать не нужно, включая и пробел между <Len 40> и B4. Значения всего,кроме заголовка будут меняться, поэтому к ним привязываться бессмысленно. З.Ы. Получилось полно, но видно иначе было бы неясно, о чём идёт речь. |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Попробуем так:
Это сообщение отредактировал(а) amg - 8.11.2007, 11:37 |
|||
|
||||
ma_lover |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
К сожалению выкидывает ошибку:
Это сообщение отредактировал(а) ma_lover - 8.11.2007, 11:52 |
||||
|
|||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
||||
|
||||
ma_lover |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.3.2007 Репутация: нет Всего: нет |
C еденичкой работает, но удаляет пробелы и из заголовка, который трогать нельзя.. Кстати, какую роль играет еденичка??
Вот ещё обновлённый вариант второго вопроса,если что..
Это сообщение отредактировал(а) ma_lover - 8.11.2007, 12:17 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |