Pull to refresh

Comments 10

В текущем синтаксисе есть что-то чарующее. Моск радуется когда после отладки в RegexBuddy получается маленькая строчка, которая решает большие проблемы. К тому же, со временем, синтаксис становится логичным и понятным.

Еще момент, подобный синтаксис облегчает парсинг RegExp (это мало сказывается при условии компиляции в p-code, но все же).

В целом, если вы оформите и доведете до ума свой креатив, почему бы и нет (я — нет)? Ведь есть же YAML (я люблю его) :)
ИМХО — проще не стало. Стало по-другому, и вместо, например, (one|two) нужно писать кучу каких-то скобок, ифов и прочих знаков. Вот это лаконично:

(www\.)?([a-z0-9]+)\.([a-z]+)

Лаконично, понятно, просто. Расписывать подробнее совсем не ясно для чего.
Это просто пока РВ небольшое. Когда оно разрастается, то становится не таким наглядным.
Одна функция на любом языке, конвертирующая Ваш формат в стандартный — и будет Вам счастье, а всем остальным спокойствие. Регекспы — они совсем не страшные, особенно если не забывать про модификатор /x.
Ну осталось только перевести регулярки на парадигму ООП и дело в шляпе )

Мне кажется, кроме прочтения книги вам стоит плотно поупражняться практически — тогда вы наверняка поймете, что всё что вы написали никому не нужно и только всё усложняет. Никто не мешает вам разбирать строки средствами знакомого вам языка программирования и не используя регекспы, вместо того, чтобы делать по сути новый язык из уже существующего и сформировавшегося (и кстати именно в таком виде заслужившего огромную популярность и полезность).

Ну и конечно смотрится это всё ужасно, если честно, например символьные классы POSIX — но это моё личное мнение.
Практически я с ними работал еще до того как книгу прочитал, она просто навела на эти мысли.
Автор. Советую вам просто побольше потренироваться работать с РВ. Вы через некоторое время, сможете отделять взглядом блоки и без дополнительных телодвижений видеть, что происходит в РВ.
Был один проект, где активно использовал регулярные выражения, не помогло особо. То есть когда пишешь, все нормально, а стоит через какое-то время вернуться к этому РВ, чтобы что-то поправить и начинаешь минут 5 вглядываться, чтобы понять что тут записано.
Чтобы этого избежать, как верно подметили выше надо использовать модификатор x, он достаточно сильно облегчает понимание. И комментарии опять же. Вот выше приведенную регулярку можно записать так:
(www\.)?    # начинается с необязательного 'www.'
([a-z0-9]+) # после чего любое количество цифр и букв (> 0)
\.          # обязательно точка
([a-z]+)    # зона - только из букв


Это конечно просто пример, в сложных регекспах даже просто форматирование скобок переносами и табуляцией очень сильно помогает
кг/ам

не надо в декларативный язык совать императивный мусор…
встраивать один язык в другой в виде строки — дерьмовая практика. это касается прежде всего sql и pcre
Sign up to leave a comment.

Articles