Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как получить часть строки соответствующее регулярному выражению  (Прочитано 618 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stazot

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Народ всем привет, нужна помощь с регулярными выражениями, с grep-ом вроде получилось но он просто выделяет вхождение, а мне нужен именно кусок строки подпадающий под регулярное выражение. из строки "В этом году прибыль была 120% от общего товарооборота"(просто первое что пришло в голову) надо получить 120%, В PHP помнится всё просто было что то такое "\(\d\{0,3}%)", как это в Shell-е реализовать. Что то я гуглил гуглил да не нагуглил ничего толкового. Вот grep с ключиком -P как раз понимает это, но просто выделяет это в строке.

Punko

  • Гость
Stazot, с грепом используй опцию -o (маленькая латинская о)
Она выводит ТОЛЬКО совпадающий с регэкспом кусок.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
grep -o самый оптимальный вариант. Только
  • круглые скобки не нужны
  • класса \d в стандартных регулярках нет — импользуют [0-9]
  • ноль можно не писать {,3}
Ну и всегда есть sed для более сложных задач
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Stazot

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Punko,
Благодарю за подсказку про ключик -о до этого я его что то не увидел в мане

Punko

  • Гость
Stazot, пожалуйста.
и рекомендую воспользоваться советами Azure, он дело всегда говорит.
Тему сегодня закрою как решённую.

Оффлайн Stazot

  • Автор темы
  • Участник
  • *
  • Сообщений: 146
    • Просмотр профиля
Azure,
Твоими советами поэксперементировал, спасибо большое.

 

 

Страница сгенерирована за 0.043 секунд. Запросов: 25.