| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Регулярные выражения |
| Автор: SIMarOK 1.11.2012, 20:30 | ||
| Здравствуйте!, застрял с регуляркой Есть группа чисел и букв: 1 и qwe 2 и rty 3 и uio 4 и pas необходимо чтобы при присутствии букв группы присутствовала и ее цифра поиск идет по буквам, т.е. если допустим присутствует буква q то должна присуствуовать цифра этой группы, т.е. 1 пример кода который работает не так как надо
выводится qwy2, а должно поидее qwy12 т.к. присустсвуют буквы из двух групп Прошу помощи любящих регулярки |
| Автор: skyboy 1.11.2012, 21:09 |
| не понятно. приведи пример: что на входе → что на выходе а то пока не понятно, почему qwy2 → qwy12, а не qwy112 |
| Автор: SIMarOK 1.11.2012, 21:13 |
| К примеру, На входе q на выходе q1 (условие выполняется и добавляется в конец цифра группы) qwe → qwe1 (условие выполняется и добавляется в конец цифра группы) 1qwe → 1qwe (условие НЕ выполняется, т.к. цифра группы уже присутствует) qwru → qwru123 1es → 1es4 (цифра(1) одной группы уже присутствовала ,поэтому добавилась только цифра 4ой группы) |
| Автор: skyboy 1.11.2012, 23:58 |
| а как ты 12 от 1 и 2 отличать будешь? |
| Автор: SIMarOK 2.11.2012, 10:43 | ||
Эта переменная разбирается по-символьно, в ней нет парных элементов Вопрос сейчас в регулярном выражении, у меня с ними проблема, не дружу |
| Автор: ksnk 2.11.2012, 10:52 | ||
| Регулярка для проверки корректности или для корректироваки неправильного? Для проверки подойдет такая регулярка для первой группы
|
| Автор: SIMarOK 2.11.2012, 11:11 | ||||||
Выводит qy, а должен выводить qy12, т.к. присустсвуют буквы из первой и второй группы. Регулярка нужна для поиска. Если для вышеупомянутой задачи можно использовать другие функции, более простые, то я только за:) |
| Автор: Aliance 2.11.2012, 11:35 |
| Я бы вообще сделал без регулярок. Представляем строку как массив, пробегаемся для каждой буквы и записываем соотв. ей цифру. в доп. массив. Дальше делаем array_unique, implode и дописываем в конец строки. Примерный алгоритм такой, в целом конечно посложнее, нужны проверки и прочее. При таком подходе не будет захардкодено все в if`ы. |
| Автор: ksnk 2.11.2012, 11:53 | ||
? |
| Автор: SIMarOK 2.11.2012, 11:54 | ||||||
Мне кажется такой метод создаст большую нагрузку чем вариант с регулярками Добавлено @ 11:57
Работает не верно, при входящей "q" выводит "q12", а поидее должен "q1" т.к. присутствует только первая группа |
| Автор: ksnk 2.11.2012, 12:02 | ||
|
| Автор: SIMarOK 2.11.2012, 12:07 |
| ksnk, работает, спасибо! Проблема решена |
| Автор: kobzarkrm 2.11.2012, 23:14 | ||
дофига ресурсов будет жрать такая операция |