У меня есть строки типа @variable a 2
с начала строки.Ключевое слово и его идентификатор @variable
известны и фиксированы.Переменные могут иметь [_a-zA-Z]
в качестве первого символа, а затем и номера второго символа или их комбинации.Они отделены как минимум пробелом от variable
и хотя бы пробелом от значения, которое также может быть выражением, таким как (1+2)/2
, или некоторой другой переменной b
, поэтому оно начинается с числа, письмо или скобка.После этого в строке может быть много неважных вещей (в том числе и новой строки).
Что я хочу сделать, это сопоставить переменную, но только если это первое, что следует после variable
и сопровождается значением или выражением.Вот что у меня получилось после последней попытки:
<context id="variable-noequal" style-ref="variable">
<match extended="true">
(((variable|variabel)\b\s+)?)
(([_a-zA-Z][_a-zA-Z0-9]*))
(?=((\s+)|(\s*\n)))
</match>
</context>
Я пробовал разные комбинации (молот тоже участвовал), но я могу либо не найти совпадений, либо сопоставить каждое совпадение переменной, которая можетследовать (например, a 2 для Боже ради ).Взгляд назад всегда дает lookbehind not fixed
или какую-то такую ошибку.Я также пробовал с prefix/suffix/keyword
, где keyword
был нечетким совпадением, которое вы видите выше, но это тоже не сработало.Поиск в сети показал \K
, что для меня ничего не значит.Я знаю, что совпадение могло бы быть лучше, например, так как оно есть, простое подчеркивание могло бы передаваться как переменная, я думаю, что я могу это сделать, но сейчас я просто хочу, чтобы оно было правильно выделено.Я, наверное, должен упомянуть, что я не разбираюсь в PCRE.Есть ли исправление для этого?
Извините, я забыл добавить это в GtkSourceView для gEdit, но я думаю, что оно основано на PCRE (?).