- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过更改我的 fsharp 语法文件(来自 this 插件)中的这一行来获得一些效率改进:
syn match fsharpModule "\%(\<open\s\+\)\@<=[a-zA-Z.]\+"
到
syn match fsharpModule "\%(\<open\s\+\)\zs[a-zA-Z.]\+"
因为“\@<=”构造上的文档指出:
For speed it's often much better to avoid this multi. Try using "\zs" instead |/\zs|.
但是,这不起作用,并且没有突出显示
open SomeModule
怎么会这样呢?在使用第一个和第二个匹配模式时,在 vim 中进行常规搜索(使用/)会突出显示“SomeModule”。
最佳答案
这是由语法包含引起的,并且因为 open
存在另一个语法组。您尝试断言的关键字。
在语法突出显示中,\zs
只影响结果(Vim 将用语法组突出显示的内容);当涉及与其他语法组的关系时,整个模式(即包括 \zs
之前的文本)被视为匹配。 (帮助中没有明确记录此实现细节。)相比之下,肯定的后向断言 ( \%(...\)\@<=
) 既不包含在结果中,也不包含在实际匹配中。这解释了您所看到的行为差异。 (它与可选分组无关,正如 @rmunn 怀疑的那样,也与 @Sergio 的答案中的多行无关,因为 \s\+
不允许在中间换行。)
我认为这里易于实现更重要,所以使用\@<=
应该没问题。 ,尽管帮助建议 \zs
。如果您愿意完全重构语法脚本,则可以通过以下方式解决这个问题,假设有 syntax keyword fsharpOpen open
某处:
syntax keyword fsharpOpen nextgroup=fsharpModule skipwhite open
syntax match fsharpModule "[a-zA-Z.]\+" contained
关于regex - Vim 语法文件与\zs 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323753/
我试图通过更改我的 fsharp 语法文件(来自 this 插件)中的这一行来获得一些效率改进: syn match fsharpModule "\%(\
你好, 所以我买了一个ZS-040 HC-05 Arduino蓝牙模块,我想更改它的名称。我了解到,您必须在 AT 模式下执行此操作。我遵循了 http://www.martyncurrey.com/
如果我只想用 Atom 中的其他内容替换匹配项的一部分,我该怎么做? Ruby 正则表达式解决方案可能会奏效,因为 Ruby 使用的正则表达式引擎与 Oniguruma(Atom 使用的引擎)非常相似
我的文件顶部有这个: var server = require('http'); var watchr = require('watchr'); var io = require('socket.io
介绍/问题: 我一直在研究正则表达式的使用(使用VBA/Excel),到目前为止我无法理解如何隔离 (或 " " )使用 \s 中包含的其他空白字符的正则表达式。我以为我可以使用\p{Zs} ,但到
我是一名优秀的程序员,十分优秀!