正则表达式是一种用于文本处理的模式匹配。Unix工具grep、sed、awk和perl语言都广泛的使用正则表达式。传统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... ) | 举报| 收藏