Мой любимый отрывок. Окончательное в усладе для глаз Emacs:
;; real lisp hackers use the lambda character
;; courtesy of stefan monnier on c.l.l
(defun sm-lambda-mode-hook ()
(font-lock-add-keywords
nil `(("\\<lambda\\>"
(0 (progn (compose-region (match-beginning 0) (match-end 0)
,(make-char 'greek-iso8859-7 107))
nil))))))
(add-hook 'emacs-lisp-mode-hook 'sm-lambda-mode-hook)
(add-hook 'lisp-interactive-mode-hook 'sm-lamba-mode-hook)
(add-hook 'scheme-mode-hook 'sm-lambda-mode-hook)
, Таким образом, Вы видите т.е. следующее при редактировании шепелявости/схемы:
(global-set-key "^Cr" '(λ () (interactive) (revert-buffer t t nil)))
Посмотрите здесь документацию по модулю Python re
.
Я думаю, что это не /
, а скорее -
в вашем первом классе символов: [+ - /]
соответствует +
, /
и любому значению ASCII между ними, что случается с включите запятую.
Возможно, этот совет из справочной документации:
Если вы хотите включить ']' или '-' внутри набора, поставьте перед ним обратную косую черту или поместите его как первый символ.
Вы говорите, чтобы заменить ноль или несколько косых черт на 'a'
. Таким образом, он заменяет каждое «отсутствие символа» на 'a'
. :)
Вы, вероятно, имели в виду [/] +
, то есть одну или несколько косых черт.
РЕДАКТИРОВАТЬ: Прочтите ответ Бер , чтобы узнать о решении исходной проблемы. Я недостаточно внимательно прочитал вопрос.
r '[/] *' означает «Сопоставить 0 или более косых черт». Между 'b' и 'c' и между 'c' и 'ровно 0 косых черт. 'd'. Следовательно, эти совпадения заменяются на "а".
*
соответствует своему аргументу ноль или более раз и, таким образом, соответствует пустой строке. Пустая строка (логически) находится между любыми двумя последовательными символами. Следовательно,
>>> import re
>>> re.sub(r'x*', 'a', 'bcd')
'abacada'
Что касается косой черты, она не подвергается специальной обработке:
>>> re.sub(r'/', 'a', 'b/c/d')
'bacad'
Документация описывает синтаксис регулярных выражений в Python. Как видите, косая черта не имеет специальной функции.
Причина, по которой [\ w \ d \ s + - / *] *
также находит запятые, заключается в том, что внутри квадратных скобок стоит тире ] -
обозначает диапазон . В этом случае вам нужны не все символы между +
и /
, а буквальные символы +
, -
и ] /
. Поэтому пишите тире как последний символ: [\ w \ d \ s + / * -] *
. Это должно исправить это.