Редактор nano. Подсветка синтаксиса, нежадный режим.

Elina74

Например, есть у меня на одной строке перловской программы две разные текстовые строки
if(col="1" or col="2"){
;
}
Хочу, чтобы строки выглядели подсвеченными.
Пишу в nanorc следующее:
syntax "perl" "\.p[lm]$"
color red "(\".*?\")"
получаю:
if(col="1" or col="2"){
;
}
а вовсе не то, что хотелось
if(col="1" or col="2"){
;
}
Это баг nano или я чего-то глубинного не понимаю в регулярных выражениях?
nano --version
GNU nano version 2.0.2 (compiled 16:27:57, Dec 22 2006)
Email: nano-editor.org Web: http://www.nano-editor.org/
Compiled options: --disable-wrapping-as-root --enable-color --enable-extra --enable-multibuffer --enable-nanorc --enable-utf8

bleyman

use "(\"[^\"]*?\")"

Elina74

Типа, сначала идет кавычка, потом любое количество (0 или более) не кавычек, за которыми идет снова кавычка.
А почему мое выражение работало не так?

Elina74

Еще пришлось дополнить на случай наличия \" внутри кавычек. Теперь вроде работает хорошо. Написал по аналогии и для одинарной кавычки.
color red "\"([^"]|\\\")*?\""
color red "'([^']|\\')*?'"

bleyman

А, а я знака вопросега-то и не заметил =)
Глючит чота видимо, и сотри его на всякий случай, вдруг он какую-нибудь загадочную семантику собой олицетворяет!

tokuchu

Может регулярные выражения в nano не поддерживают "нежадность"?

Elina74

Может регулярные выражения в nano не поддерживают "нежадность"?
как же так, ведь в примере фиджея и в моем последнем есть "нежадное" выражение *?

slonishka

ну вот они его мб и не поддерживают.
я, честно говоря, никогда особо этой нежадностью не пользовался.
если есть возможность, пишу так, как запостил.

tokuchu

есть "нежадное" выражение *?
В этом случае "?" означает, что предудущее может повториться 0 или 1 раз, то есть ничего не меняет, т.к. "*" тоже 0 позволяет.
А если есть поддержка "нежадности", то сочетание "*?" уже будет истолковано особенно.

apl13

как же так, ведь в примере фиджея и в моем последнем есть "нежадное" выражение *?
В примере Фиджея нежадность не имеет никакого значения, знак вопроса можно выкинуть.
Оставить комментарий
Имя или ник:
Комментарий: