SublimeText2插件设置:在DocBlockr插件的设置中转义正则表达式的美元符号

时间:2012-06-12 12:28:47

标签: python regex escaping sublimetext sublimetext2

DocBlockr SublimeText2 允许您根据变量名称声明自定义变量类型规则。

来自自述文件:

"jsdocs_notation_map": [{
  "regex": "tbl_?[Rr]ow", // any arbitrary regex to test against the var name
  "type": "TableRow"      // you can add your own types
}]

我想要捕获以$字符

开头的变量

示例:

"jsdocs_notation_map": [{
  "regex": "^[$].+",      // any word that starts with $
  "type": "HTMLElement"   // That is its type
}]

这样$header将从上述正则表达式中捕获。

不幸的是,上述方法无效。该插件无法识别我的$header变量 作为“HTMLElement”。

我尝试过以下正则表达式字符串:

  • $ - 它匹配所有内容,甚至是内部没有$的varnames。
  • \\$
  • \\\\$
  • $$
  • \\$$
  • \\\\$$
  • [$]
  • [\\$]

旁注:编辑不允许我插入奇数\

所有这些都不匹配,除了第一个匹配所有东西。

这不是RegEx问题。应该有效的RegEx,(例如:^[$].+因为$字符而无法正常工作。我认为它与插件设置机制以及python解析机制如何使用$有关。

旁注:"^[.].+" RegEx按预期工作。

欢迎任何帮助

PS:如果有人可以提供帮助,我希望在正则表达式字符串的开头有“^”。我不认为它不会开箱即用,但如果没有,请分享相关知识。

4 个答案:

答案 0 :(得分:1)

哦,嘿......所以插件的作用是从变量/函数名中删除任何前导$_,然后应用正则表达式。这是因为_foo $foofoo都可以使用相同的正则表达式进行识别,因为当时我并没有考虑那些具有特殊含义的字符。看起来它实际上是一个完全错误的结果。看起来你已经花了一些时间来攻击它,抱歉'回合那个。

我现在added it to the issue tracker。在将来,这也是引起我注意的好方法:)

答案 1 :(得分:0)

$是行尾,所以你可以尝试把它放在方括号中作为逃避它的替代尝试...所以像[$] [^ \ s] +

答案 2 :(得分:0)

"\\$"应该有效。第一个\转义第二个用于JSON。然后生成正则表达式\$,它匹配文字美元。

答案 3 :(得分:0)

"^[$].*"

^强制匹配行的开头。这里的[]用于逃避$(比确定你需要多少层反斜杠更容易),+*匹配后面的所有内容。如果您想匹配一个或多个字母数字/下划线字符,可以将.*替换为[a-zA-Z0-9_]+