![]() |
|
Модераторы: ginnie |
![]()
|
|
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
есть две переменные которые необходимо между собой сравнить c помощью регулярных выражений
например, если PhoneNumber2 = 54321#,а PhoneNumber1 = 54321, то условие должно выполниться как положительное (где # - это символ) я сделал как описано ниже, но так не правильно...
как можно описать переменную, которая соотвествует другой переменной, но в конце при этом содержит символ # |
|||
|
||||
| krypt3r |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: нет Всего: 16 |
Возможно, так
|
|||
|
||||
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
язык программирования практически не знаю.
1 вопрос. $PhoneNumber1 : $PhoneNumber2; что это значит в строке? 2 вопрос. $PhoneNumber1 =~ /$PhoneNumber2/ ? тут указываете что за переменной может быть 0 или 1 любой символ так? 3 вопрос. я сделал следующим образом, вроде как работает... но знак # по докам что все что идет за ним заремировано, или в моем случае он будет как символ в переменной?
} |
|||
|
||||
| krypt3r |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: нет Всего: 16 |
Чтобы было более понятно, код
идентичен коду
Первый вариант - более компактная запись (заимствовано из Си). Символы : и ? к регуляркам не имеют отношения. Перед символом # поставьте бэкслэш \ |
||||
|
|||||
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
спасибо за помощь, а еще помогите, когда в переменных часть символов совпадает.
например, если PhoneNumber2 = 89019993210, где 89019993210 (11 знаков номера), а PhoneNumber1 = 821219019993210, где 8(выход на межгород)2121(пин-код, всегда 4 цифры)9019993210(10 знаков номера) то условие сравнения двух переменных, должно выполниться как положительное я так понимаю должна вызываться какая-то подфункция, которая будет изменять PhoneNumber1 и приводить его в виду PhoneNumber2. А сравнивать буду что-то типа: if ( $PhoneNumber2 =~/($pinkodMG[$PhoneNumber1])/ ) {} вызываться будет функция типа:
Как это правильно можно сделать? |
|||
|
||||
| krypt3r |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: нет Всего: 16 |
Можно еще проще сделать
Если так хочется с функцией повозиться, то вот вариант
|
||||
|
|||||
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
что-то скрипт у меня возвращает и другие значения, которые не удовлетворяют условию...
|
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Мм.. А вот так не сработает?? Это сообщение отредактировал(а) Bulat - 12.10.2009, 13:17 -------------------- менеджер по кодеврайтингу |
|||
|
||||
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
не сработало (
вообще все значения стали удовлетворять условию ( сформировал в условии вот такую строку: if ( $PhoneNumber2 =~/(\b\d{3}\b)|(\b3822$PhoneNumber1\b)|(\b$PhoneNumber1\b)/ or $PhoneNumber1 =~/(\b\d{3}\b)|(\b$PhoneNumber3\b)|($PhoneNumber2\#)/ ) {} из доков понял, что использовать or в условии только один раз можно, поэтому все таки склоняюсь к тому, что при сравнении вызывать подпрограмму, в которой приводить переменную PhoneNumber1 к виду без пин-кода и проверять через оператор присваивания. Как предложил "krypt3r" отработало правильно, но как теперь в мое условие добавить еще вот это: $PhoneNumber2 eq pinkodMG ($PhoneNumber1 ) Это сообщение отредактировал(а) stells1983 - 13.10.2009, 05:12 |
|||
|
||||
| stells1983 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 12.10.2009 Репутация: нет Всего: нет |
добавил в конструкцию
if .............. elsif ( $PhoneNumber2 eq pinkodMG ($PhoneNumber1)) {} else и все ) всем спасибо! |
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
да, сорри, немного не учел "булевость" перла.
Это сообщение отредактировал(а) Bulat - 14.10.2009, 11:01 -------------------- менеджер по кодеврайтингу |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |