分页: 1 / 1

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

发表于 : 2012-07-26 10:08
indam
在 syntax 下创建了一个 cpp.vim,其中几句没起作用

代码: 全选

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

代码: 全选

TProfile
TProfile2D
TProfile3D
求指教

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

发表于 : 2012-07-26 10:30
indam
找到原因了,应该这样写,好奇怪啊

代码: 全选

syn match thType "\<TProfile\([23]D\)\?\>"

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

发表于 : 2012-07-26 10:33
cjxgm

代码: 全选

syn match thType "\<TProfile\([23]D\)?\>"
POSIX 正则要求()用来匹配括号,\(\)分组
awk/sed/grep 里也是这样的

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

发表于 : 2012-07-26 10:43
indam
cjxgm 写了:

代码: 全选

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

http://blog.sina.com.cn/s/blog_7e4015380100vzga.html

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

发表于 : 2012-07-26 10:44
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自己搞得)

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

发表于 : 2012-07-26 10:45
indam
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

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

发表于 : 2012-07-29 21:17
pangding
只要记住,除了 * 是没 \ 的以外,其它的全得 \ 转义。
这是很一支很有历史的正则表达式流派,继承自 ed 和 vi 等工具。