Vim 中使用正则表达式自定义语法高亮的问题【已解决】

Vim、Emacs配置和使用
回复
头像
indam
帖子: 28
注册时间: 2009-07-29 15:21

Vim 中使用正则表达式自定义语法高亮的问题【已解决】

#1

帖子 indam » 2012-07-26 10:08

在 syntax 下创建了一个 cpp.vim,其中几句没起作用

代码: 全选

syn match thType "\<TH[123][CSIFKD]*\>"
syn match thType "\<TProfile([23]D)?\>"
第一句可以正确匹配,但是第二句没有任何效果,求指教
应该匹配的类型为

代码: 全选

TProfile
TProfile2D
TProfile3D
求指教
上次由 indam 在 2012-07-26 10:31,总共编辑 1 次。
头像
indam
帖子: 28
注册时间: 2009-07-29 15:21

Re: Vim 中使用正则表达式自定义语法高亮的问题

#2

帖子 indam » 2012-07-26 10:30

找到原因了,应该这样写,好奇怪啊

代码: 全选

syn match thType "\<TProfile\([23]D\)\?\>"
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: Vim 中使用正则表达式自定义语法高亮的问题

#3

帖子 cjxgm » 2012-07-26 10:33

代码: 全选

syn match thType "\<TProfile\([23]D\)?\>"
POSIX 正则要求()用来匹配括号,\(\)分组
awk/sed/grep 里也是这样的
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
indam
帖子: 28
注册时间: 2009-07-29 15:21

Re: Vim 中使用正则表达式自定义语法高亮的问题

#4

帖子 indam » 2012-07-26 10:43

cjxgm 写了:

代码: 全选

syn match thType "\<TProfile\([23]D\)?\>"
POSIX 正则要求()匹配(),\(\)分组
vim 里和 perl 有些不同
\+ 代表 +
\? 代表 ?
\{n,m} 代表 {n,m}

http://blog.sina.com.cn/s/blog_7e4015380100vzga.html
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: Vim 中使用正则表达式自定义语法高亮的问题

#5

帖子 cjxgm » 2012-07-26 10:44

indam 写了:
cjxgm 写了:

代码: 全选

syn match thType "\<TProfile\([23]D\)?\>"
POSIX 正则要求()匹配(),\(\)分组
vim 里和 perl 有些不同
\+ 代表 +
\? 代表 ?
\{n,m} 代表 {n,m}

http://blog.sina.com.cn/s/blog_7e4015380100vzga.html
perl 的标准是" perl 正则"(perl自己搞得)
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
indam
帖子: 28
注册时间: 2009-07-29 15:21

Re: Vim 中使用正则表达式自定义语法高亮的问题

#6

帖子 indam » 2012-07-26 10:45

cjxgm 写了:
indam 写了:
cjxgm 写了:

代码: 全选

syn match thType "\<TProfile\([23]D\)?\>"
POSIX 正则要求()匹配(),\(\)分组
vim 里和 perl 有些不同
\+ 代表 +
\? 代表 ?
\{n,m} 代表 {n,m}

http://blog.sina.com.cn/s/blog_7e4015380100vzga.html
perl 的标准是" perl 正则"(perl自己搞得)
原来是这个样子 :em19
pangding
帖子: 48
注册时间: 2011-03-01 23:14

Re: Vim 中使用正则表达式自定义语法高亮的问题【已解决】

#7

帖子 pangding » 2012-07-29 21:17

只要记住,除了 * 是没 \ 的以外,其它的全得 \ 转义。
这是很一支很有历史的正则表达式流派,继承自 ed 和 vi 等工具。
回复