Я пытаюсь создать регулярное выражение, которое может соответствовать этому:
argument ::= define_scope [';' define_scope]*
define_scope ::= (['local'] | 'global') define_var
define_var ::= variable_name expression
variable_name ::= Name
Итак, что-то вроде local varName something;;world foo bar;;local foobar bar
.
Я пробовал с:
((^|;;)?(local|world) (.+?) (.+?))+
но если я использую это в предыдущем примере, я получу эти совпадения:
local varName s
;;world foo b
;;local foobar b
, поэтому потребуется только первая буква последнего слова каждого совпадения.
Если я удаляю ленивое соответствие изпоследняя группа, она соответствует только:
local varName something;;world foo bar;;local foobar bar
, поэтому последняя группа something;;world foo bar;;local foobar bar
.
Некоторые идеи, чтобы это исправить?