а Вы бы не могли, пожалуйста, прикрутить работу вот таких выражений:
Code: Select all
([^;,]|(?<=`),)*
regex101.com:

а в akelpad'е не срабатывает вот эта часть
Code: Select all
|(?<=`),

Code: Select all
([^;,]|(?<=`),)*
Code: Select all
|(?<=`),
А что в AP с ними не так?Drugmix wrote:прикрутить работу вот таких выражений:Code: Select all
([^;,]|(?<=`),)*
Не совсем понятно, почему она должна сработать?Drugmix wrote: а в akelpad'е не срабатывает вот эта частьCode: Select all
|(?<=`),
Code: Select all
Команда, аргумент1, аргумент2, аргумент3, …, аргументN
Code: Select all
Команда, аргумент1, аргумент2_часть1`,аргумент2_часть2, аргумент 3
в-третьих, я всё же проверил в своём правиле и оно стало приводить к краху АкелПадаYuS wrote:В AP захваченный символ повторно уже не просматривается, т.е. не срабатывает именно Positive Lookbehind
Code: Select all
0 "^\s*(((Try)|(Else))(?:\s*,\s*|\s+)|(.{1,38}(?=::))(?:::))?\s*(#IfWinActive\b)(?:\s*,\s*?)?((?<=,).*[^`](?=(,|$)))*?)?(\s+;.*$)?((?<=,).*[^`](?=(,|$)))?(\s+;.*)?$" `\3=(4,${OP},0) \4=(4,${IF},0) \5=(2,${STR},0) \6=(2,${OP},0) \8=(2,${ATTR},0) \9=(3,${COMM},0) \11=(2,${ATTR},0) \12=(3,${COMM},0)`
С какого перепугу? В первом правиле захватываем команду до первой запятой, не захватывая саму запятую, во втором - ловим то, что между неэкранированными запятыми или запятой и концом строки (не захватывая запятые - пусть раскрашиваются как разделители). Где тут каскадное наложение? А Вы что же, в каждом правиле строку целиком обрабатываете? (готов офигеть от положительного ответа)Drugmix wrote:Без этого одно правило будет просто перебивать другое.
Имхо, для частного случая, хорошим выходом из положения, была бы возможность использования других символов для разделения частей аргументов... или это в принципе невозможно в синтаксисе того языка?Drugmix wrote: И да, [запятая] в конце - опциональна, а [слово] может содержать экранированную запятую.
Если я правильно понял, тут вся трудность в том, как объяснить регулярке (в реализации AP), что такое разделитель "," и экранированный разделитель "`,", причем с учетом того, что захваченный символ никаким lookahead и lookbehind уже никак не просмотреть.Serge Yolkin wrote:готов офигеть от положительного ответа
Code: Select all
\S+\s))
Можно попытаться как-то так соорудить шаблон:Drugmix wrote: во-вторых, мне надо, чтобы всё это захватилось, а значит должно быть в (), ноYuS wrote:В AP захваченный символ повторно уже не просматривается, т.е. не срабатывает именно Positive Lookbehind
Code: Select all
([^;,`]*(?!`,)|[^,;]*?`,[^,;`]*?)*