正规表达式—-太强了!

懒得写了。。
把小白的贴过来了。。
这是我遇到的一个问题,不过,还是小白比较能想,嘿嘿。。。很经典。。
———————–zz begin————————— 
同学问了一个问题:
用vim将下面这段代码
#ifdef WIN32
 SOCKET sock = INVALID_SOCKET;
#else
 int  sock = -1;
#endif
#ifdef WIN32
 SOCKET sock = INVALID_SOCKET;
#endif
#ifdef WIN32
 SOCKET sock = INVALID_SOCKET;
#else
 int  sock = -1;
#endif
中所有WIN32部分提取出来,也就是变成

 SOCKET sock = INVALID_SOCKET;

 SOCKET sock = INVALID_SOCKET;
 SOCKET sock = INVALID_SOCKET;
下面是我的答案,感谢jackqq的灵感 ^_^
:%s/#ifdef WIN32_s(_.{-})_s(#endif|#else_.{-}#endif)/1/g
—————————zz end———————————
 暂时还没发现有什么问题,效果不错,赞一个!!
 
 
 
Advertisements

2 thoughts on “正规表达式—-太强了!

  1. 看到mscana在我blog上的留言了么,细想起来这个问题确实不是正规文法能够表示的,这就好比“n个配对的括号:(((…)))”这种问题一样,得对正则表达式扩展才行,我看网上有关于匹配(((…)))这种东西的文章,例如perl就可以,不过不知道vim能不能行。当时突发奇想写出来这么一条: /\((\+\1)\+\) 但是vim不让嵌套…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s