繁体   English   中英

什么vim模式匹配以dot结尾的数字?

[英]What vim pattern matches a number which ends with dot?

在PDP11 / 40汇编语言中,以点结尾的数字被解释为十进制数。 我使用以下模式但无法匹配该表示法,例如, 8.

syn match asmpdp11DecNumber /\<[0-9]\+\.\>/

当我替换\\. D模式可以匹配8D没有任何问题。 谁能告诉我我的“end-with-dot”模式有什么问题? 谢谢。

您的正则表达式语法很好(嗯,您可以使用\\d而不是[0-9] ),但您的'iskeyword'值不包括句点. ,所以你不能匹配它后面的词尾\\> )。

看起来您正在为自定义文件类型编写语法。 一种选择是

:setlocal filetype+=.

在相应的~/.vim/ftplugin/asmpdp11.vim文件类型插件中。 当句点字符被视为语法中的关键字字符时,请执行此操作。

否则,删除\\>以使正则表达式匹配。 如果你想确保在句点之后没有非空白字符,你可以在匹配后断言那个条件,例如:

:syn match asmpdp11DecNumber /\<\d\+\.\S\@!/

请注意,vim将单词定义为:

单词由一系列字母,数字和下划线或一系列其他非空白字符组成,用空格(空格,制表符)分隔。 可以使用'iskeyword'选项更改此设置。 空行也被认为是一个单词。

所以如果空格跟随数字,你的模式就可以了。 你可能想跳过\\>

我认为问题是你的词尾边界标记。 试试这个:

syn match asmpdp11DecNumber /\<[0-9]\+\./

请注意,我已删除了\\>字尾边界。 我不确定那里有什么,但是如果你删除它似乎有用。 . 不被视为单词的一部分,这就是您的版本失败的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM