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

Vim、Emacs配置和使用
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#1

帖子 fanhe » 2011-04-22 15:33

需要用一条正则表达式匹配

代码: 全选

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>
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#2

帖子 fanhe » 2011-04-22 15:50

反正就是,求个最快速清除字符串中所有尖括号的内容的方法
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#3

帖子 lilydjwg » 2011-04-22 16:26

Vim 的正则做不到,参考正则表达式30分钟入门教程
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#4

帖子 fanhe » 2011-04-22 17:51

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

有个python的快速方案也行
用vim遍历一次字符串太慢了
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#5

帖子 lilydjwg » 2011-04-22 21:18

fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

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

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#6

帖子 fanhe » 2011-04-23 11:13

lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

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

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#7

帖子 lilydjwg » 2011-04-23 13:55

fanhe 写了:
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

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

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟
Perl 一般的 Linux 都有装吧?Python 的正则实现不了递归匹配的。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#8

帖子 fanhe » 2011-04-23 17:30

lilydjwg 写了:
fanhe 写了:
lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

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

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
有没有python的,不能多加个perl依赖啊
对perl风格的正则实在不熟
Perl 一般的 Linux 都有装吧?Python 的正则实现不了递归匹配的。
要考虑windows用户的感受
虽然我很少用windows,但是有时候还是被迫进去的
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

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

#9

帖子 BigSnake.NET » 2011-04-23 17:50

不可能,泵引理的经典推论,参考正则语言理论
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#10

帖子 lilydjwg » 2011-04-23 18:13

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

To pack or to parse, that's the question for you.
头像
Fermat618
帖子: 728
注册时间: 2008-12-28 16:01

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

#11

帖子 Fermat618 » 2011-04-25 22:06

lilydjwg 写了:
fanhe 写了: 这个正则我都不知道兼容哪个的,除了.net

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

代码: 全选

:perldo s/(<(?:[^<>]++|(?1))*>)//g
这行我貌似可以看懂 :em11
爱因斯坦会弹钢琴
爱因斯坦会拉小提琴
爱因斯坦会骑自行车
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#12

帖子 fanhe » 2011-04-25 23:17

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

To pack or to parse, that's the question for you.
加多个perl就是一倍和两倍的问题
最后还是遍及一遍字符串了事,没办法
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

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

#13

帖子 eexpress » 2011-04-25 23:29

pcre 才是王者。
win下说正则,不难受啊。

猫在搞c++语法分析的事情?那是要死人的哦。
● 鸣学
zldrobit
帖子: 27
注册时间: 2011-02-28 0:27

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

#14

帖子 zldrobit » 2011-04-27 14:51

额。。。。。 vim自己的s好像就可以了呀

代码: 全选

%s/<[^<>]*>//g
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

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

#15

帖子 fanhe » 2011-04-27 14:54

zldrobit 写了:额。。。。。 vim自己的s好像就可以了呀

代码: 全选

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