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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Помогите разобраться с регулярками)  (Прочитано 655 раз)

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

Оффлайн maza51

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Вот никак не найду, как мне выдернуть со строки только нужное мне слово?)

Вот у меня есть строка допустим: "ga":"123","name":"porok",iКак мне выдернуть со строки только слово "porok"?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #1 : 08 Января 2015, 20:35:56 »
Вы как-то определите как надо определять нужное слово: по расположению, по окружающим словам|символам, по самому слову?
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн maza51

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #2 : 08 Января 2015, 20:38:03 »
по окружающим словам|символам

Оффлайн spk-ubuntu

  • Активист
  • *
  • Сообщений: 502
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #3 : 08 Января 2015, 21:01:24 »
что-то около того:
s/.*\"name\":\s*\"(.*)\".*/$1/

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #4 : 08 Января 2015, 21:08:15 »
grep -Po '"name":"\K\w+'
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн maza51

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #5 : 08 Января 2015, 22:01:17 »
grep -Po '"name":"\K\w+'
Спасибо большое)

Оффлайн maza51

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #6 : 13 Января 2015, 04:19:44 »
Еще такой вопрос. Как мне сделать выражение сразу по нескольким строкам, а не только в одной?

Пользователь решил продолжить мысль 13 Января 2015, 05:38:01:
Ну и еще) Как мне выбрать только первое совпадение?
« Последнее редактирование: 13 Января 2015, 05:38:01 от maza51 »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #7 : 13 Января 2015, 14:37:22 »
Первое совпадение где? В файле? Добавить параметр -m 1(--max-count=1) В строке? Перестроить регулярку соответствующим образом, или использовать другие инструменты (sed например). Показывайте образец — подберем.
По поводу строк не понятно что именно вы хотите. grep и так работает по строкам, сколько строк ему на вход не подать, так что опять же приводите пример, что Вам надо.
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн maza51

  • Автор темы
  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #8 : 13 Января 2015, 15:01:15 »
Первое совпадение где? В файле? Добавить параметр -m 1(--max-count=1) В строке? Перестроить регулярку соответствующим образом, или использовать другие инструменты (sed например). Показывайте образец — подберем.
По поводу строк не понятно что именно вы хотите. grep и так работает по строкам, сколько строк ему на вход не подать, так что опять же приводите пример, что Вам надо.
-m 1 работает, спасибо.
По поводу строк. Сейчас регулярное выражение ищет по каждой строке отдельно. А надо чтоб сразу по всем строкам.
В общем в php есть флаг /s. На данный момент я стираю все переносы строк через sed, а потом выдергиваю что мне надо. Но это не правильно)

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите разобраться с регулярками)
« Ответ #9 : 13 Января 2015, 16:02:11 »
C примером было бы понятнее… А так переносы убираются tr -d '\n' (хотя лучше менять на какой-нибудь неиспользуемый символ, а потом обратно) или используется что-то вроде perl, потому как большинство bash-инструментов — построчные.
В Linux можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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