现在的位置: 首页 > 综合 > 正文

vc/mfc/vs2005下正则表达式源代码编程/微软greta Regular Expressions

2012年05月14日 ⁄ 综合 ⁄ 共 971字 ⁄ 字号 评论关闭

1.目前c/C++方面的正则表达式大家必提boost,其实boost是一个庞大的库集合,正式因为庞大,下载编译后还得100多M。所以不选择。

2.greta是微软的正则表达式封装,不过看它说明除了windows下可以用,linux其实也可以用(c++)。

3.greta实在vc6下发布的,用vs2005编译,会报错:

具体错误参照:social.microsoft.com/Forums/zh-TW/vcgeneral/thread/7461e68d-739d-4b36-a068-1c12a827e594 ,“Greta Parser for VS2005”,就是:

'regex::hetero_stack<AlignmentT,RuntimeTypeCheckT,AssumePodT,DynamicBlockSizeT,StaticBlockSizeT>:tack_node::header' : dependent name is not a type

 

解决办法:在模板定义的tack_node前面加上struct即可。

4.其他参数说明(如区分大小写)

NOCASE 不区分大小写。
GLOBAL
全局。如果指定该参数,rpattern::subsitute 会将串中全部匹配表达式的参数替换;否则(默认),若指定了 RIGHTMOST 参数,替换最后一个,没有指定(默认),替换第一个。
MULTILINE
若不指定(默认),'^' 匹配串的开头,'$' 匹配串的结束;若指定,^ 匹配行开头,$ 匹配行结束。
SINGLELINE
若不指定(默认),'.' 匹配除换行符(\n)外的任何字符;若指定,'.'也匹配换行符。SINGLELINE 看起来和 MULTILINE 不可一起用,其实她们的含义不是矛盾的,可以一起用。这是 GRETA sb 之处,不知道是否从 perl copy过来的。
RIGHTMOST
查找最右边的、最长的匹配串。默认是找左边的、最长的匹配串。btw, 在正则表达式中加 ? 可以使表达式找最短的匹配串。如串"test"re ".+" 会匹配整个 "test" 串,而 re ".+?" 则只匹配 "t"
NOBACKREFS
不记录 backref 。替换时用上此参数,可大幅度提高速度。这是文档上说的,俺没有试过。
ALLBACKREFS
参见 match_results::all_backref 的解释。

抱歉!评论已关闭.