【发布时间】:2013-06-26 13:04:48
【问题描述】:
这是一个 Perl 风格的正则表达式,可以在 Sublime Text 2 的 Ruby 包中的一个 sn-p 文件中找到:
/(?:\A|_)([A-Za-z0-9]+)(?:\.rb)?/(?2::\u$1)/g
我知道它将“some_class.rb”之类的文件名转换为“SomeClass”,但我无法弄清楚这部分的作用:(?2::。 Sublime Text 2 使用 boost 作为其正则表达式,所以我检查了 Boost-Extended Format String Syntax 的文档,我发现 boost 支持格式字符串 (f.inst.(?2(foo):(bar))) 中的条件,但你永远不需要两个冒号.此外,?2 将指向 second 子表达式,但上面的表达式只匹配一个子表达式。由于这些原因,我不认为这是一个条件表达式。
感谢您提供任何启发性的答案。
【问题讨论】:
-
也许它只是偶然工作?也许第一个
:是true部分,第二个:分隔false部分。但由于2不是表达式的一部分,因此条件永远不能使用true部分,因此它总是使用\u$1(这与您看到的结果一致)。
标签: regex boost sublimetext2