📄 re_detail_vc6.inl
字号:
// re_detail_vc6.inl
//
// 正则表达式解析库
//
// 与2004年在北京写于创意鹰翔公司
// 版权申明:
// 作者放弃除著作署名权之外的任何权益。你可以在保留此申明的前提下,自由的,无限制的
// 分发、修改和使用本函数库。
// 如果你有任何建议和BUG汇报,欢迎你联系原始作者:tearshark@eaglefly.com.cn
//
// 原始作者 : lanzhengpeng(兰征鹏)
// Modify time : 2004-6-15 22:57
// 历史: 参看re_history.txt
//-----------------------------------------------------------------------------
//template<class TRAITS>
re_error /*re_pattern<TRAITS>::*/parse(const TRAITS::re_char * szStart,
const TRAITS::re_char * szEnd = NULL,
re_flags flags = rf_zero)
{
clear();
_push_syntex(new rp_array);
if(szEnd == NULL)
szEnd = reinterpret_cast<const re_char *>(reinterpret_cast<int>(szStart) + traits::ByteLen(szStart));
assert(szEnd >= szStart);
if(szEnd < szStart)
return ree_address;
m_eFlags = flags;
if(flags & rf_nocase)
{
size_t nByteLen = reinterpret_cast<int>(szEnd) - reinterpret_cast<int>(szStart);
re_char * sz = reinterpret_cast<re_char *>(new char[nByteLen]);
ToLower(szStart,szEnd,sz);
szStart = sz;
szEnd = reinterpret_cast<const re_char *>(reinterpret_cast<int>(szStart) + nByteLen);
m_eError = _parse(szStart,szEnd);
m_Syntexes.clear();
delete [] reinterpret_cast<char *>(sz);
if(m_eError == ree_ok)
{
if(flags & rt_optimize)
_optimize();
}
else
{
clear();
}
return m_eError;
}
else
{
m_eError = _parse(szStart,szEnd);
m_Syntexes.clear();
if(m_eError == ree_ok)
{
if(flags & rt_optimize)
_optimize();
}
else
{
clear();
}
return m_eError;
}
}
//template<class TRAITS>
re_error /*re_pattern<TRAITS>::*/match(const TRAITS::re_char * szStart,
re_result<TRAITS> & result,
const TRAITS::re_char * szEnd = NULL) const
{
if(szEnd == NULL)
szEnd = reinterpret_cast<const re_char *>(reinterpret_cast<int>(szStart) + traits::ByteLen(szStart));
assert(szEnd >= szStart);
if(szEnd < szStart)
return ree_address;
result.m_Groups.clear();
if(option() & rf_nocase)
{
size_t nByteLen = reinterpret_cast<int>(szEnd) - reinterpret_cast<int>(szStart);
re_char * szNew = reinterpret_cast<re_char *>(new char[nByteLen]);
ToLower(szStart,szEnd,szNew);
szEnd = reinterpret_cast<const re_char *>(reinterpret_cast<int>(szNew) + nByteLen);
re_error e = _match(re_match_temp(szNew,szEnd,option()),szNew,result);
if(e == ree_ok)
result._repair(reinterpret_cast<int>(szStart) - reinterpret_cast<int>(szNew));
delete [] reinterpret_cast<char *>(szNew);
return e;
}
else
{
return _match(re_match_temp(szStart,szEnd,option()),szStart,result);
}
}
//template<class TRAITS>
void /*re_pattern<TRAITS>::*/clear()
{
m_eError = ree_ok;
m_eFlags = rf_zero;
m_nGroupId = 0;
if(m_Syntex != NULL)
{
delete m_Syntex;
m_Syntex = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -