当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

集思广义支持中文的正则表达式[VC/C++编程]

赞助商链接



  本文“集思广义支持中文的正则表达式[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

初衷——我想说的

大家好!

我所知道的正则表达式库有:boost的,GNU的,VC7带的ATL中的和微软公布的greta.我利用过后三种,greta利用时间最短(才两天).

目前我来说说我的感受

GNU的正则表达式根本就不支持多字节码,设置连UNICODE都不支持,在parse阶段就会不法操作.在软件环球化的本日,实在不是一个好现象.长处是支持的语法完备.

ATL中的正则表达式不完好支持多字节码,可以完善的支持UNICODE.不过,此正则表达式书写非常清楚,没有效到STL里面任何高深的东西,也没有效到模板中分外高深的东西(我认为这才是C++的发展之道,毕竟,聪明人是少数——大部份是平淡的人,曲高寡合,总有一天会被大大都程序员丢弃,剩下一帮高手顾影自怜),所以,通过非常细小和简单的更改便可以完善支持多字节码.缺陷是不支持{n,m}语法,不支持递归语法,如:"([^\"]*(\.)*[^\"]*)*".最后一个*是不被支持的.

greta能完善的支持单字节码和UNICODE,语法也完善,并且据说广泛情形下速度也快,不过,把部份实现放cpp里招致不能同时利用单字节码和UNICODE编码,posix和perl语法,办理办法还算简单:把cpp改名为inl,在.h里include这个inl,再改正一点别的东西便可.问题是,它没有支持多字节码的实现,我细心看看了,仿佛通过自己写一个多字节码的迭代子,可以办理这个问题,因为他支持basic_string.

接下来的问题是:STL若何支持多字节码的?我没有在SGI-STL,STLPort453中找到关于多字节码的东西.basic_string默许只实现了char,wchar_t的base_string.而要自己实现一个迭代子,我又不知道若何下手.

我目前的需求是

需求正则表达式支持近似这样的语法:

“/汉字[  ]+[^ , ,]+[  ]*[,,][  ]*[^ , ,]+”

以匹配“/汉字 兰征鹏 ,正则表达式”.

利用STL举行字符串搜索都有问题,比方在一篇文章中搜索“正则”,极大概就把三个汉字的中间四个字节匹配上了.呈现这样的情形,让人哭笑不得.

有这方面经验的或对STL对比熟习的同仁,请勿鄙吝指导

礼!

lanzhengpeng

2004-06-02

_______________________________________________

Cpp mailing list

在C/C++中假如想要利用与Perl兼容的regexp库,一个挑选是Boost,另一个挑选是PCRE库.Boost中的regex算法近来做了改近,平均效率比从前的版本提高了10倍,不过用起来大概对比麻烦.PCRE已经很成熟了,Apache/Postfix/PHP/Python都用它.我认为应当优先考虑.不过我自己没有在Windows下编译过,不是很有掌控.

See www.pcre.org


  以上是“集思广义支持中文的正则表达式[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 集思广义支持中文的正则表达式
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .