Рискуя получить несколько отрицательных голосов за то, что говорю правду, я буду откровенен об этом (как, в конце концов, ответ должен быть): помимо возможности вернуть несколько захватов для одного вызова совпадения em > (возможно в регулярных выражениях, но гораздо более запутанным образом) и шаблон %bxy
, который соответствует сбалансированной паре разделителей (например, все виды скобок и т. д.) и квалифицируется как полезный, мощный и лучший , почти все, что могут делать шаблоны Lua, также могут выполнять регулярные выражения.
С другой стороны, недостатки шаблонов Lua по сравнению с регулярными выражениями, когда дело доходит до функций, значительны, и их слишком много упоминается (например, отсутствие OR, отсутствие групп, не связанных с захватом, выражений просмотра и т. Д.). Теперь это было бы сбалансировано, если бы, скажем, шаблоны Lua были бы значительно быстрее, чем обычно более медленные регулярные выражения, но я не уверен, существует ли - и где - такое сравнение, которое исключало бы общую скорость Lua из-за его легкий характер, использование столов и так далее.
Настоящая причина, по которой Lua не потрудился добавить регулярные выражения в свой набор инструментов, не может заключаться в длине необходимого кода (это ерунда, современные компьютеры даже не мигают, когда речь идет о 4000 строках кода против всего 500, даже если он немного иначе переводится в библиотеку), но, вероятно, это связано с тем, что, будучи языком сценариев, предполагалось, что родительский язык уже включает возможность использования регулярных выражений. При взгляде на общую картину становится очевидным, что Lua как язык был разработан с учетом простоты, скорости и только необходимых функций. В большинстве случаев он работает хорошо, но если вам нужно больше возможностей в этой области, и вы не можете воспроизвести их с помощью других функций Lua, регулярные выражения являются более всеобъемлющими.
Хорошо то, что различия в синтаксисе между шаблоном Lua и регулярными выражениями в основном незначительны, поэтому, если вы знаете одно, вы можете относительно легко адаптироваться к другому.
person
Yin Cognyto
schedule
26.05.2021