Форум — General Вопрос по регулярке regexp 0 1 Как код видаecho abc4-def-1a23-456|grep -Po '.*(?=-\d)' переделать, чтобы выводило до первого повторения -\d, а не до последнего?Т.е. получить abc4-def, а не abc-def-1a23 Ссылка
Если топорно, то использовать нежадный проход:echo abc4-def-123-456|grep -Po '^.*?(?=-\d)'^ - символ начала строки. С его помощью отсекаем второе соответствие «123». Deleted (04.12.15 14:24:23 MSK) Показать ответы Ссылка
Ответ на: комментарий от Deleted 04.12.15 14:24:23 MSK о благодарю. про ^ не догадался teod0r ★★★★★ (04.12.15 14:31:44 MSK) автор топика Ссылка
Ответ на: комментарий от Deleted 04.12.15 14:24:23 MSK не могу понять почему оно работает.почему ^ работает в комбинации с нежадным. никак не пойму teod0r ★★★★★ (14.12.15 22:37:36 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от teod0r 14.12.15 22:37:36 MSK ^ в данном случае якорь. Он служит отправной точкой для дальнейшего поиска совпадения. Deleted (15.12.15 12:03:10 MSK) Показать ответ Ссылка
Ответ на: комментарий от Deleted 15.12.15 12:03:10 MSK то есть нежадный смотрит на всю строку до него? teod0r ★★★★★ (15.12.15 12:13:39 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от teod0r 15.12.15 12:13:39 MSK Нежадный ищет до первого соответствия следующих после него символов в регулярке. А искать он будет как раз от знака предстоящего ^ - якорь и будет отправной точкой для старта поиска, первый символ ж :) Deleted (15.12.15 13:19:27 MSK) Ссылка