![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
SIMarOK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Здравствуйте!, застрял с регуляркой
Есть группа чисел и букв: 1 и qwe 2 и rty 3 и uio 4 и pas необходимо чтобы при присутствии букв группы присутствовала и ее цифра поиск идет по буквам, т.е. если допустим присутствует буква q то должна присуствуовать цифра этой группы, т.е. 1 пример кода который работает не так как надо
выводится qwy2, а должно поидее qwy12 т.к. присустсвуют буквы из двух групп Прошу помощи любящих регулярки ![]() Это сообщение отредактировал(а) SIMarOK - 1.11.2012, 20:32 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
не понятно.
приведи пример: что на входе → что на выходе а то пока не понятно, почему qwy2 → qwy12, а не qwy112 |
|||
|
||||
SIMarOK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
К примеру,
На входе q на выходе q1 (условие выполняется и добавляется в конец цифра группы) qwe → qwe1 (условие выполняется и добавляется в конец цифра группы) 1qwe → 1qwe (условие НЕ выполняется, т.к. цифра группы уже присутствует) qwru → qwru123 1es → 1es4 (цифра(1) одной группы уже присутствовала ,поэтому добавилась только цифра 4ой группы) Это сообщение отредактировал(а) SIMarOK - 1.11.2012, 21:16 |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
а как ты 12 от 1 и 2 отличать будешь?
|
|||
|
||||
SIMarOK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Эта переменная разбирается по-символьно, в ней нет парных элементов Вопрос сейчас в регулярном выражении, у меня с ними проблема, не дружу Это сообщение отредактировал(а) SIMarOK - 2.11.2012, 10:51 |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Регулярка для проверки корректности или для корректироваки неправильного?
Для проверки подойдет такая регулярка для первой группы
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SIMarOK |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Выводит qy, а должен выводить qy12, т.к. присустсвуют буквы из первой и второй группы. Регулярка нужна для поиска. Если для вышеупомянутой задачи можно использовать другие функции, более простые, то я только за:) Это сообщение отредактировал(а) SIMarOK - 2.11.2012, 11:11 |
||||||
|
|||||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Я бы вообще сделал без регулярок. Представляем строку как массив, пробегаемся для каждой буквы и записываем соотв. ей цифру. в доп. массив. Дальше делаем array_unique, implode и дописываем в конец строки. Примерный алгоритм такой, в целом конечно посложнее, нужны проверки и прочее.
При таком подходе не будет захардкодено все в if`ы. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SIMarOK |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
Мне кажется такой метод создаст большую нагрузку чем вариант с регулярками Добавлено @ 11:57
Работает не верно, при входящей "q" выводит "q12", а поидее должен "q1" т.к. присутствует только первая группа Это сообщение отредактировал(а) SIMarOK - 2.11.2012, 11:59 |
||||||
|
|||||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
SIMarOK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 25.10.2004 Репутация: нет Всего: нет |
ksnk, работает, спасибо!
Проблема решена |
|||
|
||||
kobzarkrm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 2.11.2012 Где: Москва Репутация: нет Всего: нет |
дофига ресурсов будет жрать такая операция |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Если кажется - креститься надо. Делаете профилирование и смотрите на результат. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |