GRETA正则表达式模板类库

GRETA正则表达式模板类库,第1张

GRETA正则表达式模板类库,第2张

本文翻译了几篇文章的内容,简单介绍了ATL CAtlRegExp、GRETA、Boost::regex等正则表达式库。这些表达式库使我们能够方便地利用常规库的强大功能,为我们的工作提供便利。

正则表达式语法字符元含义。匹配单个字符[]指定匹配方括号中任何字符的字符类。示例:[abc]匹配“a”、“b”或“c”。如果出现在字符类的开头,它将对该字符类求反,并且该求反的字符类匹配除方括号中的字符之外的字符。例如,[ABC]匹配除“a”、“b”和“c”以外的字符。如果出现在正则表达式前面,则匹配输入的开头,例如:[ABC]匹配以“a”、“b”或“c”开头的输入。-在字符类中,指定字符的范围。例如:[0-9]匹配从“0”到“9”的数字。?表示?前面的表达式是可选的,可以匹配一次,也可以不匹配。比如:[0-9][0-9]?匹配“2”或“12”。+表示?前面的表达式匹配一次或多次。比如:[0-9]+匹配“1”、“13”、“666”等等。

指示*前的表达式匹配零次或多次。??, +?, *??+和*的非贪婪匹配版本,匹配尽可能少的字符;然后呢。、+和*是贪婪版本,匹配尽可能多的字符。例如,如果输入“”,将匹配“”,而“”将匹配。()分组运算符。例如:(d+,)*d+匹配由逗号分隔的一串数字,例如:“1”或“1,23,456”。转义字符,转义紧随其后的字符。例如,[0-9]+匹配一个或多个数字,而[0-9]+匹配一个后跟加号的数字。反斜杠也用于缩写,A表示任何数字或字母。如果后跟数字N,则匹配第N个匹配组(从0开始),例如,。*?匹配“内容”。注意,在C++字符串中,反斜杠需要用双反斜杠\:\+"、" \a "、"来表示。*?"。$放在正则表达式的末尾,它匹配输入的结尾。例如:[0-9]$匹配最后输入的数字。|分隔符,用于分隔两个表达式以正确匹配其中一个,例如:T|the匹配“the”或“the”。


缩写匹配

匹配缩写a字母,数字([a-za-z0-9])空空白:([\ t]) c字母([a-zA-Z])d十进制数字([0-9])h十六进制数字([0-9a )) q引用字符串("["]*)|(' ' '[' ' ']* ')w一段文本([a-zA-Z]+)z一个整数([0-9]+)
ATL CATLRegExp

ATL Server经常需要解码地址、命令等复杂的文本字段,而正则表达式是强大的文本解析工具,所以ATL提供了正则表达式解释工具。

示例:

# include " STD afx . h "
# include
int main(int argc,char * argv[])
{
CAtlRegExp reUrl;
//五个匹配组:scheme、authority、path、query、fragment
REParseError status = reUrl。解析(
”({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?");
if (REPARSE_ERROR_OK!= status)
{
//意外错误。
返回0;
}
CAtlREMatchContext mcUrl;
如果(!勒尔。match(
" http://search . Microsoft . com/us/search . ASP?qu=atl&boolean=ALL#results ",
&mcUrl))
{
//意外错误。
返回0;
}
for(UINT nGroupIndex = 0;nGroupIndex < MC URL . m _ unum groups;
++ nGroupIndex)
{
const CAtlREMatchContext::RECHAR * szStart = 0;
const CAtlREMatchContext::RECHAR * szEnd = 0;
mcUrl。GetMatch(nGroupIndex,&szStart,& SZ end);
ptr diff _ t nLength = SZ end-SZ start;
printf("%d: "%。*s"
",nGroupIndex,nLength,szStart);
}
}输出:0:" http "
1:" search . Microsoft . com "
2:"/us/search . ASP "
3:" qu = atl & boolean = boolean。匹配结果由第二个参数pContext指向的CAtlREMatchContext类返回。匹配结果和相关信息存储在CAtlREMatchContext类中,通过访问CAtlREMatchContext的方法和成员可以获得匹配结果。CAtlREMatchContext通过m_uNumGroups成员和GetMatch()方法向调用方提供匹配结果信息。M_uNumGroups表示匹配组中有多少个组,GetMatch()根据传递给它的组的索引值返回匹配字符串的pStart和pEnd指针。有了这两个指针,调用者自然可以方便地得到匹配结果。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » GRETA正则表达式模板类库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情