Регулярные выражения для новичка.

Veles

Творец (III)
Сообщения
24
Симпатии
6
Баллы
80
Только осваиваю тему регулярных выражений, порекомендуйте пожалуйста учебник, где бы чётко и ясно раскрывалась тема, плюс были бы домашние задания для отработки материала. Благодарю.
 
Регулярные выражения - wiki + Регулярные выражения (regexp) — основы : habr.com + учебник + другие материалы с habr.com
Сервисы для тренировок:
- regex101.com
- regexr.com
Книжки (есть в сети):
- Бен Форта Освой самостоятельно регулярные выражения. 10 минут на урок
- Джеффри Фридл Регулярные выражения [3-е издание]
- Майкл Фицджеральд Регулярные выражения. Основы
- Ян Гойвертс, Стивен Левитан Регулярные выражения. Сборник рецептов
 
Последнее редактирование:
Только осваиваю тему регулярных выражений, порекомендуйте пожалуйста учебник,
Поскольку регулярки очень нужны, но нечасто, учебник вам не поможет — когда в следующий раз понадобится, вылетит из головы.
Лучше всего иметь под рукой памятку — занести туда что чаще применяется, и вскользь остальное.
Вот например моя 2011 года — https://fromgomel.com/?module=articles&c=articles&b=6&a=11
За десяток лет заглянул туда раз пять. Но пригождается иногда, да.
Когда месяц пишешь апи, заглядываешь ежедневно. А потом 2 года не нужно)
Напишите лучше себе свой, да примеров побольше)
 
Поскольку регулярки очень нужны, но нечасто, учебник вам не поможет — когда в следующий раз понадобится, вылетит из головы.
Лучше всего иметь под рукой памятку — занести туда что чаще применяется, и вскользь остальное.
Вот например моя 2011 года — https://fromgomel.com/?module=articles&c=articles&b=6&a=11
За десяток лет заглянул туда раз пять. Но пригождается иногда, да.
Когда месяц пишешь апи, заглядываешь ежедневно. А потом 2 года не нужно)
Напишите лучше себе свой, да примеров побольше)
Памятки ("выжимка" информации) - очень полезны и их нужно делать для себя. Но...
Если человек в теме вообще "ни в зуб ногой", то на чью-либо памятку он будет смотреть как "баран на новые ворота".
Сначала нужно получить хоть какую-то базу, т.е. почитать статьи по основам, книжки (их тоже очень полезно читать), не сервисах-тренажерах потренироваться. А уже в ходе чтения материалов создавать (обновлять) для себя "выжимку" (памятку), чтобы затем уже не лопатить "тонны" информации заново.
Когда уже более менее разобрался в теме полезно почитать чужие памятки, чтобы из них что-то добавить в свою.
Ну и без FAQ тоже никуда: stackoverflow , qna.habr.com
 
Последнее редактирование:
В свое время понравился цикл статей с примерами (очень доступно) о регулярках: Шерлок Холмс спешит на помощь вебпрограммисту или регулярные выражения на пальцах. И да, все дело в практике. Ну а с конкретными задачами: как сделать, - обращайтесь. Всегда интересно подумать и потренироваться.
 
  • Мне нравится
Симпатии: Veles
В свое время понравился цикл статей с примерами (очень доступно) о регулярках: Шерлок Холмс спешит на помощь вебпрограммисту или регулярные выражения на пальцах. И да, все дело в практике. Ну а с конкретными задачами: как сделать, - обращайтесь. Всегда интересно подумать и потренироваться.
Спасибо! Хороший ресурс!
По поводу конкретной задачи, сейчас меня интересует, каким образом в bash script'е происходит подмена значений. Вот простой пример, config'а в json
JSON:
{
    "Keys": ["key01","key02","key03"],
    "Option01": {
        "val01": false,
        "val02": null,
        "val03": null,
        "val04": 500000
    },
}

Каким образом, с помощью регулярных выражений, можно удалить старые значения и записать новые?

Грубо говоря в скрипте я пишу вот так:
Bash:
read -p "Please enter new keys : " keys
И дальше мне нужно, чтобы скрипт очищал старые значения ключей и вставлял новый из $keys
 
Спасибо! Хороший ресурс!
По поводу конкретной задачи, сейчас меня интересует, каким образом в bash script'е происходит подмена значений. Вот простой пример, config'а в json
JSON:
{
    "Keys": ["key01","key02","key03"],
    "Option01": {
        "val01": false,
        "val02": null,
        "val03": null,
        "val04": 500000
    },
}

Каким образом, с помощью регулярных выражений, можно удалить старые значения и записать новые?

Грубо говоря в скрипте я пишу вот так:
Bash:
read -p "Please enter new keys : " keys
И дальше мне нужно, чтобы скрипт очищал старые значения ключей и вставлял новый из $keys
Подходов здесь может быть несколько. Есть варианты с использованием регулярных выражений и редактора sed. sed -i -E "s/регулярка что/регулярка на что меняем/" .config (или как называется файл?). SED очень удобен в этом плане для замен и переваривает огромное количество файлов при поиске и замене. Но можно и написать скрипт на bash. Плюс, разрешите поинтересоваться, откуда берется массив замен? И файла? Базы данных? Что именно выступает источником?
 
  • Мне нравится
Симпатии: Veles
Плюс, разрешите поинтересоваться, откуда берется массив замен? И файла? Базы данных? Что именно выступает источником?
Я пишу скрипт для установки сервиса, скрипт создаёт нового пользователя и производит настройку. Сервис представляет из себя запуск программы, конфигурация которой находится во внешнем файле, я делаю своего рода мастер, который будет менять значения в конфигурационном файле, путем опроса пользователя и если пользователь не знает ответа, простановки дефолтных значений. Сам конфиг представляет из себя json файл.
 
Последнее редактирование:
Каким образом, с помощью регулярных выражений, можно удалить старые значения и записать новые?
1. Считать конфиг из дефолтных настроек и записать значения в массив.
2. Опросить пользователя и переписать значения некоторых ключей в массиве, созданном на этапе 1.
3. Записать полученный массив в базу данных, файл, куда там ещё надо.
Ну и проверки уже добавляем по вкусу: если что важное не введено, всё сбрасываем и заново.
Конфигурационный файл менять нельзя, это неверно, он понадобится для другого пользователя!
Данные лучше всего в базу данных записывать.
В баше не силен, но алгоритм в любом языке примерно одинаков.
И да, регулярки здесь ни при чём! Разве что в проверках применять на правильность введённых данных (емайл, сайт и прочее).
 
Последнее редактирование:
  • Мне нравится
Симпатии: Veles
Назад
Верх