fastdo  0.6.8
winux::MultiMatch类 参考

KMP多项匹配/替换 更多...

#include <strings.hpp>

struct  MatchResult
 
struct  MatchState
 

Public 类型

typedef std::vector< short > KmpNextValueArray
 NEXT值数组类型 更多...
 
typedef std::vector< MatchStateMatchStates
 匹配状态数组类型 更多...
 
typedef String(* ReplaceFuncType) (MultiMatch const *matchObj, ssize_t item, void *extra)
 替换函数的类型 更多...
 
typedef MatchResult(MultiMatch::* SearchFuncType) (String const &str, ssize_t offset) const
 搜索算法函数类型 更多...
 

Public 成员函数

 MultiMatch ()
 构造函数0 更多...
 
 MultiMatch (StringArray const &matches, StringArray const &replaces)
 构造函数1,要求匹配项和替换项 更多...
 
 MultiMatch (StringArray const &matches, ReplaceFuncType replaceFunc, void *extra=NULL)
 构造函数2,要求匹配项和替换函数,若不进行替换,则replaceFunc可为NULL 更多...
 
template<size_t _N>
 MultiMatch (String(&matches)[_N], String(&replaces)[_N])
 构造函数3,要求匹配项和替换项 更多...
 
template<size_t _N>
 MultiMatch (String(&matches)[_N], ReplaceFuncType replaceFunc, void *extra=NULL)
 构造函数4,要求匹配项和替换函数,若不进行替换,则replaceFunc可为NULL 更多...
 
void init (StringArray const &matches, StringArray const &replaces)
 初始化(匹配项,替换项) 更多...
 
void init (StringArray const &matches, ReplaceFuncType replaceFunc, void *extra=NULL)
 初始化(匹配项,替换项回调函数) 更多...
 
ssize_t addMatchReplacePair (String const &match, String const &replace)
 添加一对匹配替换项,返回要匹配的项数 更多...
 
ssize_t addMatch (String const &match)
 添加要匹配项 更多...
 
String const & getMatchItem (ssize_t item) const
 获取指定匹配项 更多...
 
void setMatchItem (ssize_t item, String const &match)
 设置指定匹配项 更多...
 
String getReplaceItem (ssize_t item) const
 获取指定替换项 更多...
 
void setReplaceItem (ssize_t item, String const &replace)
 设置指定替换项 更多...
 
void setReplaceItems (StringArray const &replaces)
 设置替换项 更多...
 
ReplaceFuncType setReplaceFunc (ReplaceFuncType newReplaceFunc, void *extra=NULL)
 设置新的替换项回调函数,返回旧的替换项回调函数 更多...
 
void clear ()
 清空匹配项和替换项数据 更多...
 
MatchResult search (String const &str, ssize_t offset=0) const
 搜索任意一项匹配(KMP) 更多...
 
MatchResult greedSearch (String const &str, ssize_t offset=0) const
 搜索任意一项匹配(KMP贪婪模式,尽可能匹配长的项) 更多...
 
MatchResult commonSearch (String const &str, ssize_t offset=0) const
 搜索任意一项匹配(非KMP算法) 更多...
 
String replace (String const &str, ssize_t offset=0, SearchFuncType fnSearch=&MultiMatch::search) const
 替换。搜索str中的matches,并替换成replaces 更多...
 

详细描述

KMP多项匹配/替换

在文件 strings.hpp536 行定义.

成员类型定义说明

typedef std::vector<short> winux::MultiMatch::KmpNextValueArray

NEXT值数组类型

在文件 strings.hpp555 行定义.

匹配状态数组类型

在文件 strings.hpp558 行定义.

typedef String(* winux::MultiMatch::ReplaceFuncType) (MultiMatch const *matchObj, ssize_t item, void *extra)

替换函数的类型

在文件 strings.hpp561 行定义.

typedef MatchResult( MultiMatch:: * winux::MultiMatch::SearchFuncType) (String const &str, ssize_t offset) const

搜索算法函数类型

在文件 strings.hpp564 行定义.

构造及析构函数说明

winux::MultiMatch::MultiMatch ( )

构造函数0

之后需要自己调用addMatchReplacePair()、addMatch()、setReplaceFunc()设置相关参数

winux::MultiMatch::MultiMatch ( StringArray const &  matches,
StringArray const &  replaces 
)

构造函数1,要求匹配项和替换项

winux::MultiMatch::MultiMatch ( StringArray const &  matches,
ReplaceFuncType  replaceFunc,
void *  extra = NULL 
)

构造函数2,要求匹配项和替换函数,若不进行替换,则replaceFunc可为NULL

template<size_t _N>
winux::MultiMatch::MultiMatch ( String(&)  matches[_N],
String(&)  replaces[_N] 
)
inline

构造函数3,要求匹配项和替换项

在文件 strings.hpp579 行定义.

template<size_t _N>
winux::MultiMatch::MultiMatch ( String(&)  matches[_N],
ReplaceFuncType  replaceFunc,
void *  extra = NULL 
)
inline

构造函数4,要求匹配项和替换函数,若不进行替换,则replaceFunc可为NULL

在文件 strings.hpp586 行定义.

函数调用图:

成员函数说明

ssize_t winux::MultiMatch::addMatch ( String const &  match)

添加要匹配项

ssize_t winux::MultiMatch::addMatchReplacePair ( String const &  match,
String const &  replace 
)

添加一对匹配替换项,返回要匹配的项数

void winux::MultiMatch::clear ( )

清空匹配项和替换项数据

MatchResult winux::MultiMatch::commonSearch ( String const &  str,
ssize_t  offset = 0 
) const

搜索任意一项匹配(非KMP算法)

参数
str字符串
offset偏移,表示从哪个位置开始搜
返回
MatchResult(pos,item) 返回的pos考虑了offset值
String const& winux::MultiMatch::getMatchItem ( ssize_t  item) const

获取指定匹配项

String winux::MultiMatch::getReplaceItem ( ssize_t  item) const

获取指定替换项

MatchResult winux::MultiMatch::greedSearch ( String const &  str,
ssize_t  offset = 0 
) const

搜索任意一项匹配(KMP贪婪模式,尽可能匹配长的项)

参数
str字符串
offset偏移,表示从哪个位置开始搜
返回
MatchResult(pos,item) 返回的pos考虑了offset值
void winux::MultiMatch::init ( StringArray const &  matches,
StringArray const &  replaces 
)

初始化(匹配项,替换项)

void winux::MultiMatch::init ( StringArray const &  matches,
ReplaceFuncType  replaceFunc,
void *  extra = NULL 
)

初始化(匹配项,替换项回调函数)

String winux::MultiMatch::replace ( String const &  str,
ssize_t  offset = 0,
SearchFuncType  fnSearch = &MultiMatch::search 
) const

替换。搜索str中的matches,并替换成replaces

参数
str目标字符串
offset偏移,表示从哪个位置开始搜
fnSearch算法选择,请指定函数(search,greedSearch,commonSearch)
MatchResult winux::MultiMatch::search ( String const &  str,
ssize_t  offset = 0 
) const

搜索任意一项匹配(KMP)

参数
str字符串
offset偏移,表示从哪个位置开始搜
返回
MatchResult(pos,item) 返回的pos考虑了offset值
void winux::MultiMatch::setMatchItem ( ssize_t  item,
String const &  match 
)

设置指定匹配项

ReplaceFuncType winux::MultiMatch::setReplaceFunc ( ReplaceFuncType  newReplaceFunc,
void *  extra = NULL 
)

设置新的替换项回调函数,返回旧的替换项回调函数

void winux::MultiMatch::setReplaceItem ( ssize_t  item,
String const &  replace 
)

设置指定替换项

void winux::MultiMatch::setReplaceItems ( StringArray const &  replaces)

设置替换项


该类的文档由以下文件生成: