分页: 1 / 2

这个字符串能否用vim的正则匹配

发表于 : 2011-04-22 15:33
fanhe
需要用一条正则表达式匹配

代码: 全选

basic_string<char, struct std::char_traits<char>, class std::allocator<char> > & append(xyz<char> const &__str, size_type __pos, size_type __n)
匹配尖括号里面的内容,如果尖括号包含嵌套的尖括号,要求匹配最外层的尖括号

如上面,我要匹配

代码: 全选

<char, struct std::char_traits<char>, class std::allocator<char> >

代码: 全选

<char>

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-22 15:50
fanhe
反正就是,求个最快速清除字符串中所有尖括号的内容的方法

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-22 16:26
lilydjwg
Vim 的正则做不到,参考正则表达式30分钟入门教程

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-22 17:51
fanhe
lilydjwg 写了:Vim 的正则做不到,参考正则表达式30分钟入门教程
这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-22 21:18
lilydjwg
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-23 11:13
fanhe
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-23 13:55
lilydjwg
fanhe 写了:
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟
Perl 一般的 Linux 都有装吧?Python 的正则实现不了递归匹配的。

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-23 17:30
fanhe
lilydjwg 写了:
fanhe 写了:
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟
Perl 一般的 Linux 都有装吧?Python 的正则实现不了递归匹配的。
要考虑windows用户的感受
虽然我很少用windows,但是有时候还是被迫进去的

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-23 17:50
BigSnake.NET
不可能,泵引理的经典推论,参考正则语言理论

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-23 18:13
lilydjwg
fanhe 写了: 要考虑windows用户的感受
虽然我很少用windows,但是有时候还是被迫进去的
好吧,你要考虑 windows 用户,那就考虑用 python 写个简单的解析器吧。不过说实话,你既然 python 都用上了,再加个 perl 有多大的问题呢?

To pack or to parse, that's the question for you.

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-25 22:06
Fermat618
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

有个python的快速方案也行
用vim遍历一次字符串太慢了

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
这行我貌似可以看懂 :em11

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-25 23:17
fanhe
lilydjwg 写了:
fanhe 写了: 要考虑windows用户的感受
虽然我很少用windows,但是有时候还是被迫进去的
好吧,你要考虑 windows 用户,那就考虑用 python 写个简单的解析器吧。不过说实话,你既然 python 都用上了,再加个 perl 有多大的问题呢?

To pack or to parse, that's the question for you.
加多个perl就是一倍和两倍的问题
最后还是遍及一遍字符串了事,没办法

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-25 23:29
eexpress
pcre 才是王者。
win下说正则,不难受啊。

猫在搞c++语法分析的事情?那是要死人的哦。

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-27 14:51
zldrobit
额。。。。。 vim自己的s好像就可以了呀

代码: 全选

%s/<[^<>]*>//g

Re: 这个字符串能否用vim的正则匹配

发表于 : 2011-04-27 14:54
fanhe
zldrobit 写了:额。。。。。 vim自己的s好像就可以了呀

代码: 全选

%s/<[^<>]*>//g
你这个,要一直替换,替换到没有可替换才行的
这样还不如遍历一次