[UNИХ] Программное обеспечение GNU/Linux - 06 - Регулярные выражения (2017-11-08)


uneex.org
Регулярные выражения — uneex.org/LecturesCMC/LinuxSoftware2017/06_Regexp

Принцип: сопоставление строки шаблону

Шаблоны (например, в flename generation) и их недостатки.

Язык: *? [a-z] [^a-z]
⇒ целое число? :(
… (ещё антипримеры?)
Задание и принцип работы РВ

⇒ Более общий механизм? (Хомский: формальный грамматики)

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

grep,
поиск с заменой: sed, нумерация и подстановка карманов
Синтаксис:

«просто_символ» → просто символ
"." → один любой символ
"[символы]" или "[диапазон-символов]" или "[и то и то]" → один символ из диапазона
(повторитель) «атомарное_РВ*» → строка, сопоставимая атомарному_РВ, повторенному 0 или более раз (в частности, пустая)
«РВ1РВ2…РВN» → строка, которую можно разбить на последовательные части, сопоставимые РВ1…РВN соответственно
Принцип однозначности: самое левое сопоставление — самое длинное
(группа) "(РВ1РВ2…РВN)" → атомарное регулярное выражение (можно помечать повторителем)
группа == карман (так вышло)
(позиционирование) "^" и "$" → начало и конец строки (не сопоставляются символам строки, только отмечают позицию)
Регулярные выражения и конечные автоматы

NFA — «поиск с возвратом»
«A.*B.*A»? wAtBlABlAs по правилу «самый левый самый длинный»
DFA — «сопоставление»
«A*AB? AAB
A:
A ← „A*“ или
A ← „A*A“, потому что ← „A*“ и для третьего символа РВ A ← „A“, т. е.
AA:
AA ← „A*“
AA ≠ „A*AB“, потому что для четвёртого символа РВ A ≠ „B“
AA ← „A*A“, где A ← „A*“ и A ← „A“
AAB:
AAB ≠ „A*A“, потому что B ≠ „A“
уже ≠
AAB ← „A*AB“, потому что AA ← „A*A“ и B ← „B“
Расширенные РВ

Альтернатива „РВ1|РВ2“ → строка, сопоставимая или с РВ1 или с РВ2
Повторители » " (1 и более раз) и "?" (0 или 1 раз)
Повторитель «количество}» и "{[миниум],[максимум]}"
Классы эквивалентности в диапазонах
Эквивалентность базовым РВ

Утилиты: tr, grep / egrep / fgrep, awk, less, vi / vim, …

Flavours

Закавычивание с помощью \
Именование карманов
Незапоминаемые группы
Базовые или расширенные
Полезности: индикаторы начал/концов слов и т. п.
многострочные РВ

Нерегулярные выражения

Perl/PCRE, Python, иное

обратные ссылки на группы (есть в egrep: cal | egrep ([0-9])4.*\1)
нежадные повторители (опасность полного перебора).
пред- и пост-просмотр

LPIC 106.1 часть первая: Включение графики в Linux или X11


Разбираемся в том что такое X11 и оконная подсистема, принципы клиент-серверной технологии X-window, конфигурационный файл и его особенности в Ubuntu
Также упоминаем X-font сервер и команды xwininfo, xdpyinfo

LPIC 105.2 часть третья: Условные выражения и подстановка команд


Разбираем синтаксис простого скрипта, в частности конструкцию if — then — else — fi. Кроме того обсуждаем возможность отправки почты при помощи скриптов, и выясняем как выполнить подстановку команд (чтобы результат последовательности команд давал значение переменной)

Основы Linux: пользователи и вход в систему


Основы Linux
* что такое UNIX?
* user space, kernel space, system calls, POSIX, IEEE 1003.x, SUS
* какой еще такой UNICS?

Учетные записи пользователей Linux
* UID и GID
* Домашний (начальный) каталог
* Начальный командный интерпретатор
* Суперпользователь
* Группировка пользователей: первичная и дополнительные группы

Вход в систему
* терминалы
* командная строка
* терминальные команды

Об этом и о многом другом см. books.google.ru/books?isbn=5977535805

Linux File System/Structure Explained!


Было ли вам когда-нибудь трудно что-либо найти или понять, где установлены программы в Linux? Вот объяснение, для чего все эти папки и что в них находится!
Поддержать меня на Patreon: www.patreon.com/doriandotslash
Music by MrGamer (@AndreasRohdin): soundcloud.com/gamermachine

Как делать резервную копию файлов: youtu.be/eQA51w69MNQ

The Tragedy of systemd


Benno Rice

2019.linux.conf.au/schedule/presentation/156/

systemd is, to put it mildly, controversial. As a FreeBSD developer I decided I wanted to know why.

I delved into the history of bootstrap systems, and even the history of UNIX and other contemporary operating systems, to try and work out why something like systemd was seem as necessary, if not desirable. I also tried to work out why so many people found it so upsetting, annoying, or otherwise rage-inducing.

Join me on a journey through the bootstrap process, the history of init, the reasons why change can be scary, and the discovery of a part of your OS you may not even know existed.

linux.conf.au is a conference about the Linux operating system, and all aspects of the thriving ecosystem of Free and Open Source Software that has grown up around it. Run since 1999, in a different Australian or New Zealand city each year, by a team of local volunteers, LCA invites more than 500 people to learn from the people who shape the future of Open Source. For more information on the conference see linux.conf.au/

#linux.conf.au #linux #foss #opensource

REGULAR EXPRESSIONS TUTORIAL - CS50 on Twitch, EP. 15


Join CS50s David J. Malan for a tour of regular expressions--pattern-matching tools that can make identifying and verifying emails, phone numbers, passwords, and so much more all the easier; in this particular stream, well explore them in the context of re, Pythons module that itself is short for «regular expressions», for some real-world utility.

Co-hosted by Colton Ogden. Join us every week live and be a part of the chat at twitch.tv/cs50tv.

This is CS50 on Twitch.