谁说c++的正则不行?

前几天接到一个自动标注的活,基本上都是文本处理,首先想到的是具有强大文本处理能力的perl,但是苦于对perl的粗浅了解,不能保证程序的健壮,于是硬着头皮用自己比较熟悉的c++来处理。

 

首先碰见的自然是正则的问题,但是也找到了一些比较好的解决方案,例如:

class IsShengmu
{
public:
 bool operator()(char val)
 {
  return//=========================声母表(ch,sh,zh,由组合产生)============================
   (
    (val == 'f')||( val == 'g')||( val == 'h')|| (val == 'j')||( val == 'k')||
    (val == 'l')||( val == 'm')||( val == 'n')|| (val == 'p')||( val == 'q')||
    (val == 'r')||( val == 's')||( val == 't')|| (val == 'w')||( val == 'x')||
    (val == 'y')||( val == 'z')||( val == 'b')|| (val == 'c')||( val == 'd')
   )? false : true;
 }
};

这个是找出中文声母的谓语表达式,用这个简单的谓语表达式很轻松的就能区分汉语中所有的声韵母,这个东西也许用perl或者patyon之类的能更好更快更强的解决,但是我还是喜欢这种有点面对底层的感觉,几个谓语表达式轻松搞定正则。

 

由于现在的c++的STL技术,关联数组之类的也能够很轻松的解决。

 

由此观之,嗯,c++面对正则也不是那么的疲软和无力,是么~

 

P.S.

由于在写这个程序的时候用到了很多的指针,也用到了很多的迭代器,经常性的需要求上一个或者下一个对象的值,对此,应当保证所有需要使用的指针或者迭代器都指向当前的位置,在迫不得已的情况下进行了自增或者自减操作之后,一定要确保指针或者迭代器指回当前的位置,这对于计算速度可能是一种很小很小甚至可以忽略不计的影响,但是绝对降低程序出错的概率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值