页次: 1
PCRE可以写:/(0(?1)*1)/,即匹配 01、0011、000111等等,前面n个0后面就得有n个1才匹配
vim里要怎么写?
因为主要是用于高亮,不是pattern也行
syn region 倒是可以递归:
syn region test start=/0/ end=/1/ contains=test
hi link test Type
但是这样的话,会高亮“000011”,而正确的应该是只有最后的“0011”会高亮而前面的00都不高亮(就是说只有配对成功的才高亮)
PS:其实是想做这样的高亮:
# 语法
id = /\I\i*/ # identifier
blank = /\s/
pointer = /[*&]/ # pointer or reference
simple_type = id
name = id
template = /</ blank* type_list? blank* />/
type_list = type (blank* /,/ blank* type)*
noptr_type = simple_type blank* template?
ptr_blank = blank* pointer blank*
| blank+
typed_name = noptr_type ptr_blank name
# 只有在 typed_name 匹配时,才对 noptr_type 做高亮(即,除了 typed_name 以外,其它都相当于是 “contained”)
# 其中 /.../ 表示正则表达式,只有正则式是终结符
# ()|*?+ 的含义与正则式的含义一致(vim里的话与扩展正则式的含义一致)
# “#”号到行末为注释
最近编辑记录 cjxgm (2014-06-07 20:32:21)
Giumo Clanjor (哆啦比猫/兰威举)
Where there is a hacker, there is art. | Dogfooding myself. (C++ / Lua / Perl / Rust)
离线
参考一下这个?——http://www.vim.org/scripts/script.php?script_id=4176
离线
参考一下这个?——http://www.vim.org/scripts/script.php?script_id=4176
这个的话,遇到"("就会着色的吧
我需要的是只有和“)”配对之后才着色
Giumo Clanjor (哆啦比猫/兰威举)
Where there is a hacker, there is art. | Dogfooding myself. (C++ / Lua / Perl / Rust)
离线
页次: 1