2013-07-12 1 views
0

Я пытаюсь сделать промежуточный шаг для удаления слов назад, который должен останавливаться на большой буквы (в случае с camelCase).Неожиданное поведение в верхнем регистровом регулярном выражении с использованием Emacs

Для этого я думал использовать следующее, чтобы получить позицию первой заглавной буквы в обратном направлении:

(search-backward-regexp "[:upper:]")

Если вы хотите запустить это, когда точка после этой последней скобки, он будет идти здесь :

(search-backward-regexp "[:upper | :]"), То есть, после r.

Как это сделать?

ответ

5

(поиск-назад-регулярное выражение «[[: верхняя:]]»)

[:upper:] не «верхний» называют еще, а просто символьный класс, который соответствует одному символу, который должен быть один «:» или «u» или «p» или «e» или «r». Только второй «[]» выполняет поиск по классу.

+1

Фактически '[: upper:]' является просто символьным классом, который соответствует одному символу, который должен быть одним из ':' или 'u' или' p' или 'e' или' r' (избыточные повторы игнорируются). Как вы говорите, двойные квадратные скобки - это то, что делает '[[: upper:]]' и его друзей POSIX особенными. – tripleee

+0

@tripleee Спасибо! Я исправлю свой ответ. –

0

Теперь я понимаю, что это связано с переменной case-fold-search.

Когда установлено значение t, оно будет игнорировать случай при поиске.

+0

Это тоже, но ответ @Andreas Röhler также верен. – tripleee

1

Андреас ответ правильный. Однако, основываясь на том, чего вы пытаетесь достичь, я бы предложил вам взглянуть на subword-mode (он поставляется в комплекте с emacs, по крайней мере для современного emacsen)

Смежные вопросы