Pull to refresh

Comments 17

Как-то для себя открыл утилиту RegexBuddy, в ней есть чуть больше чем надо, от обработки данных, до тестирования регулярок и готового сниппета в любой доступный ЯП.

Не обижайтесь, но если Вы хотели сделать обучающий материал для новичков, то статья получилась очень слабой в этом плане.

Есть большое количество качественных обучающих материалов по регулярным выражениям, которые не приводят учебные примеры по парсингу строк вроде dfd123 - если статья для обучения новичков, то такие примеры строк текста мозг поломают.

С картинками примеров я даже не сразу понял, что сначала написан входной текст, потом регулярное выражение, а потом подсветка найденных совпадений. Можно убрать с картинок входной текст, а оставить только регулярку и подсвеченное совпадение.

Вы делаете слишком категоричные заявления, например, что . - это любой символ, кроме начала строки - это не так, всё зависит от флага m;

^ и $ - аналогично зависит от флага s;

заявление, что REGEX_LIKE принимает 2 аргумента - тоже не корректно и может ввести в заблуждение. Эта функция может принять и третий аргумент.

Если цель - научить чему-то, то лучше выбрать узкую тему и излагать материал последовательно, а не прыгать по разным темам.

Регулярное выражение начинаем с «[\s^]» — это значит, что результат должен начинаться либо с пробела, либо с начала строки

Возможно, в PG/SQL особая обработка данного выражения, но скорее всего символ ^ в данном случае является литералом, а не мета-символом начала строки.

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

Возможно, в PG/SQL особая обработка данного выражения, но скорее всего символ ^ в данном случае является литералом, а не мета-символом начала строки.

Никто не изобретал велосипед.
SELECT regexp_instr('123^abc','[\s^]');
возвращает 4.

Уточню, что spacer это может быть еще и символ табуляции, и да, ^ в данном случае должен быть просто литералом.

Регулярное выражение начинаем с «[\s^]» — это значит, что результат должен начинаться либо с пробела, либо с начала строки

Вот тут мозг немного сломался, так как ^ в квадратных скобках имеет особое значение.
То есть конструкция [^^] означает любой символ кроме начала строки?

То есть конструкция [^^] означает любой символ кроме начала строки?

Нет, конечно. Второй символ ^ в данном случае воспринимается литерально - именно как символ крышки. Хотя никто не мешает подстраховаться и написать [^\^] - уж тут точно никаких сомнений не будет.

Если надо "не с начала строки", то можно, например, поступить наивно и сказать, что между началом строки и искомым фрагментом есть хотя бы один символ: ^.+{паттерн}

так как ^ в квадратных скобках имеет особое значение.

Только если он идет в начале

[^d] и [d^] - совершенно разные, прочти противоположные значения

Вы делаете слишком категоричные заявления, например, что . - это любой символ, кроме начала строки - это не так, всё зависит от флага m;

^ и $ - аналогично зависит от флага s;

Правила для регулярок могут быть различными в зависимости от языков программирования. Это базовая теория без привязки к технологии.

заявление, что REGEX_LIKE принимает 2 аргумента - тоже не корректно и может ввести в заблуждение. Эта функция может принять и третий аргумент.

Я не утверждаю, что у нее вообще не может быть больше аргументов, это касается только рассматриваемого примера.

Возможно, в PG/SQL особая обработка данного выражения, но скорее всего символ ^ в данном случае является литералом, а не мета-символом начала строки.

В статье указан другой язык, это pl/sql. Да, здесь это символ действительно будет как просто символ, а не начало строки.

Мне в свое время хорошо помогла разобраться с регулярками книга Дж. Фридла "Регулярные выражения". Пока читала различные статьи, в голове все-таки не так хорошо укладывалось, а после прочтения книги стало понятно.

Это прям прекрасная книга! Всем, кто не понимает в регулярки советую её!

Решил прочитать когда уже в целом знал как пользоваться регулярками, но после её прочтения узнал очень много полезной подкапотной информации.

Для меня всегда регулярки были штукой, используешь классно, не используешь забыл как используешь

С другой стороны, это как езда на велосипеде или плавание - если научился, то уже не "разучишься" обратно. Глянул на шпаргалку, пару-тройку примерчиков накидал и вперёд !

Кстати, эта статья в качестве такой шпаргалочки волне себе подойдёт в памяти освежить.

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

например исключить \d или _

[^\d_]

внутри [] бэкслеш не создает метасимвол. Может вам надо [^0-9_]

Мне как сетевому инженеру регулярки без преувеличения - очень помогли в автоматизации. Любая задача с данными вроде анализа и обработки с возможным последующим конфигурированием - без RegEx становится на порядок сложнее.

Статья не ТОП, конечно, но всё равно спасибо за внимание к теме.

Sign up to leave a comment.