2011-02-04 74 views
4

我正在尝试扩展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"/> 

然后,添加正则表达式是Carles provided in his answer

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

这里是个什么样子,当你做这样!

enter image description here

+0

woow!谢谢你的报告 – eyquem 2011-02-04 22:06:12

回答

4

它应该是:

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

为了满足以下所有条件:

__hello() 
__init__() 
__this_is_a_function() 
__this_is_also_a_function__() 
__a_URL2_function__() 
1

符合之前的情况具有以下(rubular example)管道:

(^__[a-z]*__$) 
+0

@Mikhail我认为它应该是(^ __ [a-z] + __ $)以防止匹配____。 – OnesimusUnbound 2011-02-04 20:30:14

+0

@OnesimusUnbound:不,我实际上希望它匹配第二组下划线。 – Kredns 2011-02-04 20:32:30