Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

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

Ответить
Olej

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

Сообщение Olej »

Раздел здесь форума "C/C++" (и это не ошибка и сознательный выбор), поэтому и тема должна бы называться "регулярные выражения в C/C++"... а интерес представляет именно сопоставление с образцом в случае, когда сопоставляемая строка, шаблон регулярного выражения, или оба - не английский текст, скажем, русский.
Вот как здесь:

Код: Выделить всё

[olej@dell regex]$ echo вашшче | egrep "ш{2,}"
ва[color=#FF0000]шш[/color]че
И тем более вот так:

Код: Выделить всё

[olej@dell regex]$ locale | head -n2
LANG=en_US.utf8mb4
LC_CTYPE="en_US.utf8mb4"
[olej@dell regex]$ echo вашшче | egrep "ш{2,}"
ва[color=#FF0000]шш[/color]че
Когда результат никак не зависит от локали в системе.
Olej

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

Сообщение Olej »

Olej писал(а):Когда результат никак не зависит от локали в системе.
Очень предварительный вариант того, как сопоставляются с регулярными выражениями строки в C и C++, и как это происходит с UTF-8 представлением, можете почитать здесь: Регулярные выражения C/C++.
Хотя там и остаются ещё вопросы и не на 100% всё ещё ясно.
Olej

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

Сообщение Olej »

Olej писал(а): И тем более вот так:

Код: Выделить всё

[olej@dell regex]$ locale | head -n2
LANG=en_US.utf8mb4
LC_CTYPE="en_US.utf8mb4"
[olej@dell regex]$ echo вашшче | egrep "ш{2,}"
ва[color=#FF0000]шш[/color]че
Когда результат никак не зависит от локали в системе.
А вт так вот - ни в какую! :D :

Код: Выделить всё

[olej@dell triangle]$ export LANG=en_US.iso88591
[olej@dell triangle]$ locale | head -n2
LANG=en_US.iso88591
LC_CTYPE="en_US.iso88591"
[olej@dell triangle]$ echo вашшче | egrep "ш{2,}"
[olej@dell triangle]$ 
Olej

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

Сообщение Olej »

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

Изображение
Friedl J. / Фридл Дж. - Mastering Regular Expressions / Регулярные выражения (3-е издание), 2008г., СПб "Символ-Плюс", ISBN: 5-93286-121-5, 608 страниц

Изображение
Ян Гойвертс, Стивен Левитан, Регулярные выражения. Сборник рецептов, 2-е издание, СПб "Символ-Плюс", 2015г., ISBN: 978-5-93286-221-6, 704 страницы
Olej

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

Сообщение Olej »

Здесь вот онлайновый тестер регулярных выражений, который позволяет проверить результат сопоставления, без написания какого-либо программного кода и не используя никакие GNU утилиты: Regex Pal.
Очень удобно при отработке.
Шпак Дмитрий
Местный говорун
Местный говорун
Сообщения: 579
Зарегистрирован: 19 янв 2015, 15:56
Откуда: Russian_federation, какой то

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

Сообщение Шпак Дмитрий »

Вот ещё один онлайн инструмент http://www.regexr.com/
Olej

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

Сообщение Olej »

Шпак Дмитрий писал(а):Вот ещё один онлайн инструмент http://www.regexr.com/
И ещё:
0.3.1b built by gskinner.com

Но самый кайф состоит в том, что регулярные выражения, сопоставляются в одном из таких онлайнов, а также grep, egrep и др. - не сопоставляются во всех остальных и наоборот. :shock: :?

В этом смысле показательна фраза (стр.12) из книги Майкла Фицджеральда:
Большинство из указанных реализаций регулярных выражений в чем-то сходны, а в чем-то различаются. Я не могу подробно обсудить все отличия в столь маленькой кни­ге, но о многих расскажу. Любые попытки задокументировать все различия между все­ ми реализациями наверняка привели бы меня в больницу.
:D
Olej

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

Сообщение Olej »

Olej писал(а):Раздел здесь форума "C/C++" (и это не ошибка и сознательный выбор), поэтому и тема должна бы называться "регулярные выражения в C/C++"... а интерес представляет именно сопоставление с образцом в случае, когда сопоставляемая строка, шаблон регулярного выражения, или оба - не английский текст, скажем, русский.
Хотя как-раз регулярные выражения вовсе не являются темой заявленного здесь обсуждения.
А темой есть: механизмы работы с регулярными выражениями в коде на языках C/C++, те 5 альтернативных библиотек, которые для этого можно использовать.
Ответить

Вернуться в «C/C++»