正则表达式匹配从Sublime文本"视图"结束开始

Dud*_*ock 5 python regex plugins sublimetext2

我编写了以下正则表达式,它应该给出我在倒数第二个之前的视图中的所有文本}:

region = currentView.find("(?<=\\})[^\\}]+\\}[^\\}]*$", 0)
Run Code Online (Sandbox Code Playgroud)

Sublime Text似乎并不认为这$意味着"视图中的任何内容的终结".说实话,我不太明白Sublime Text认为它意味着什么.

我的正则表达似乎有效,如regexr.com所示.

我找到了一个针对我特定的环境的解决方法,我现在可以忍受:

regions = currentView.find_all("\}")
    if len(regions) > 1:
        # stuff I am doing with regions[-2] goes here
Run Code Online (Sandbox Code Playgroud)

但我想知道是否可以匹配视图内容的结尾.

jwa*_*ins 8

$在正则表达式的末尾可以表示行的结尾或输入的结尾,这取决于传入的引擎和修饰符标志.快速查看Sublime的文档显示它支持\z边界,这明确表示"输入缓冲区的结尾".因此,尝试更换您的最终$\z,看看是否有帮助.

  • 这里在[Sublime的文档](http://docs.sublimetext.info/en/latest/search_and_replace/search_and_replace_overview.html#regular-expressions)最后一句是指Boost语法.然后,在Boost的文档中,我们有:[Buffer Bundaries](http://www.boost.org/doc/libs/1_47_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html#boost_regex.syntax. perl_syntax.buffer_boundaries) (4认同)