2015-06-19 62 views
0

所以我发现下面的代码片段从吉斯特而回:的Clojure和CTAGS,高清捕捉*形成

--langdef=Clojure                   
--langmap=Clojure:.clj                  
--langmap=Clojure:+.cljx                 
--langmap=Clojure:+.cljs                 
--regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/   
--regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/    
--regex-clojure=/\([ \t]*defn-?[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/    
--regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/    
--regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/    
--regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definitio 
--regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance 
--regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/  
--regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/    
--regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/     
--regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 

但是其他图书馆纷纷推出自己的宏像defroutesdefhtml。我正在寻找创建一个通配符正则表达式,选择def*

我试着给def添加*并且它没有工作,所以很明显正则表达式是错误的。通配符正则表达式是什么样的?

回答

1

def*可以匹配defffffff之类的东西。在一个正则表达式中,明星并不意味着匹配任何东西。这意味着任何次数匹配以前的模式。在你的情况,以前的模式是f。尝试使用def[a-z]*以匹配def,后跟小写字母的任意组合。

0

感谢@ broma0的帮助,我现在.ctags具有如下:

--langdef=Clojure                
--langmap=Clojure:.clj               
--langmap=Clojure:+.cljx               
--langmap=Clojure:+.cljs               
--regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 
--regex-clojure=/\([ \t]*def[a-z]*[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,symbol/ 
--regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/  
--regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/  

高清*那些仅仅被称为“symbol`

+0

不要忘记添加* .cljc文件后缀分类! –