Regex, чтобы соответствовать двойным подчеркиваниям? - PullRequest
4 голосов
/ 04 февраля 2011

Я пытаюсь расширить файл python.lang, чтобы он выделил такие методы, как __init__. Я пытался придумать регулярное выражение, которое будет соответствовать всем __privateMethods().

python.lang - это XML-файл, содержащий все правила подсветки для файлов Python. Пример:

<context id="special-variables" style-ref="special-variable">
   <prefix>(?&lt;![\w\.])</prefix>
   <keyword>self</keyword>
   <keyword>__name__</keyword>
   <keyword>__debug__</keyword>
</context>

Как мне расширить это так, чтобы оно совпадало с двойным подчеркиванием?


[РЕШЕНИЕ]: Что я добавил в мой файл python.lang (если кому-то интересно):

Прежде всего, вам нужно добавить эту строку вверху, где определены стили.

<style id="private-methods" _name="Private Methods" map-to="def:special-constant"/>

Затем вы добавите регулярное выражение, которое Карл предоставил в своем ответе :

<context id="private-methods" style-ref="private-methods">
    <match>(__[a-zA-Z_]*(__)?)</match>
</context>

А вот как это выглядит, когда вы закончите!

enter image description here

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Это должно быть:

(__[a-zA-Z0-9_]*(__)?)

Для того, чтобы соответствовать всем следующим:

__hello()
__init__()
__this_is_a_function()
__this_is_also_a_function__()
__a_URL2_function__()
1 голос
/ 04 февраля 2011

Сопоставьте свой предыдущий случай со следующим ( рубулярный пример ):

(^__[a-z]*__$)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...