原创  boost.regex库介绍 收藏

正则表达式是一种用于文本处理的模式匹配。Unix工具grepsedawkperl语言都广泛的使用正则表达式。传统C++程序员处理正则表达式受限于采用POSIX API函数,当regex++提供API处理正则表达式,却没有一个更好的办法使用。例如regex++可以处理宽字符字符串,但传统的C语言函数库却不能处理这些字符串。

boost::regex_basic是库中间的关键类,它提出正则表达式的“可读机制”,其方法与std::string_basic非常相近。想象一下按照处理正则表达式的需要带有状态机的字符串类。类似std::string,有两个typedef类型,这意味着所有的方法都可以处理两种字符串。

namespace boost{
 
template <class charT, 
          class traits = regex_traits<charT> >
class basic_regex;
 
typedef basic_regex<char> regex;
typedef basic_regex<wchar_t> wregex;
 
}

库是如何使用的呢?假设我们现在正在开发一个信用卡处理程序,信用卡号通常有16个数字,每四个数字一组,组之间用空格或则连字符分割。在存储信用卡自前,我们想先验证一下信用卡号的格式是否正确。我们使用如下的证则表达式:

        (\d{4}[- ]){3}\d{4}

然后我们将正则表达式放到代码中去验证信用卡号的格式是否正确。

bool validate_card_format(const std::string s)
{
   static const boost::regex e("(\\d{4}[- ]){3}\\d{4}");
   return regex_match(s, e);
}

注意,代码中采用的是c++的字符串表达方法。相信各位大牛应该一眼就可以看出来了,呵呵。

发表于 @ 2006年01月16日 21:04:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:用原始套接字实现网络监听 | 新一篇:boost::regex的基本使用方法和编码支持

  • 发表评论
  • 评论内容:
  •  
Copyright © zzqsc
Powered by CSDN Blog