【问题标题】:SublimeText2 plugin settings: Escape Dollar sign for a regex in DocBlockr plugin's settingsSublime Text 2 插件设置:DocBlockr 插件设置中正则表达式的转义美元符号
【发布时间】:2012-06-12 12:28:46
【问题描述】:

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”。

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

  • $ - 它匹配所有内容,甚至是其中没有 $ 的变量名。
  • \\$
  • \\\\$
  • $$
  • \\$$
  • \\\\$$
  • [$]
  • [\\$]

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

除了第一个匹配所有内容之外,所有这些都不匹配。

这不是正则表达式问题。应该工作的正则表达式,(例如:^[$].+ 因为 $ 字符而根本不起作用。我认为这与插件设置机制以及python解析机制如何使用$有关。

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

欢迎任何帮助

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

【问题讨论】:

  • 我将您的正则表达式编辑为内联代码 - 我不确定您最初打算显示多少个反斜杠,因为 SO 正在删除一些。您可能需要仔细检查它们是否符合您的预期。

标签: python regex escaping sublimetext sublimetext2


【解决方案1】:

哦,嘿...所以插件所做的是从变量/函数名称中删除任何前导 $_,然后应用正则表达式。添加这个是为了让_foo $foofoo 都可以用相同的正则表达式来识别,因为当时我没有想到这些字符具有特殊含义。看起来这实际上是一个完全错误的功能。看起来你已经花了一些时间来破解它,抱歉。

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

【讨论】:

  • 此问题现已修复并部署。如果有任何问题,请告诉我。
【解决方案2】:

$ 是行尾,因此您可以尝试将其放在方括号中作为转义它的替代尝试...例如 [$][^\s]+

【讨论】:

    【解决方案3】:

    "\\$" 应该可以工作。第一个 \ 转义第二个以在 JSON 中使用。然后生成正则表达式\$,它与文字美元匹配。

    【讨论】:

      【解决方案4】:

      "^[$].*"

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

      【讨论】:

      • ^ 是行首 \^ 是字符串的开始。
      • 一般来说是的,我会编辑以使其更清晰。在这种情况下,matched = re.search(rule['regex'], name)here 字符串的开头 行的开头。 v = "$my_variable"; re.search("^[$].*", v) 确实返回匹配项。 (我假设在上面链接的代码中,name 指的是一个标记,而不是整行文本。)
      • 我明白以上。不幸的是,如果正则表达式中有 $ 符号,它将无法按预期工作,在插件设置文件中使用。
      猜你喜欢
      • 2018-12-07
      • 2019-11-20
      • 2014-10-23
      • 2014-04-14
      • 2016-06-01
      • 2014-12-30
      • 2014-01-09
      • 2016-12-17
      • 2011-08-20
      相关资源
      最近更新 更多