vi 正则表示达与python, C#, perl正则表达式的区别?

有这样一段文本

 

// 实际空间为0x5050~0x509F
#define NSEVT_SM_SEC_CODEBASE NSEVT_SWDL_CODEBASE_END //0x5050
#define NSEVT_SM_SEC_CODEBASE_END (NSEVT_SM_SEC_CODEBASE + 0x50 ) //0x50A0

// 实际空间为0x50A0~0x50F0
#define NSEVT_ION_CODEBASE_EXT NSEVT_SM_SEC_CODEBASE_END //0x50A0
#define NSEVT_ION_CODEBASE_EXT_END (NSEVT_ION_CODEBASE_EXT + 0x50 ) //0x50F0

 

有这样一个正则表达式

#define\s+([a-zA-Z_0-9]+)\s+(0x[0-9A-F]*)\s*(//(.*))*$

使用python, C#, ultraedit中的 perl正表达表示式可以正确匹配, 但在vi中就死活不行

据说vi使用的正则表达式遵循posix标准,和unix下的 grep, awk,sed是一样的,

 

《OReilly.Learning.the.vi.and.Vim.Editors.7th.Edition.Jul.2008.pdf》中如是说:

For the most part, the same regular expressions work with other Unix programs, such
as grep, sed, and awk.Much more information on regular expressions can be found in the two O’Reilly books sed & awk, by Dale
Dougherty and Arnold Robbins, and Mastering Regular Expressions, by Jeffrey E.F. Friedl.

 

看来之前习惯使用的表示式在vi上要再学一习了, 想想也是,vi最初是在unix上用,接着推广到别的平台上,不遵循posix还遵循啥呢?

正好手里有 sed&awk这本书,参考之后再来看看对应上边的文本,用vi该怎么写表达式,现在搞得我连删除空白行都得在ultraedit中搞。。。

你可能感兴趣的:(C++,c,python,正则表达式,C#)