有句话说的好,前卫是风,无论你是顺风如故逆风,你总在风中。
gnuregex,PCRE,greta,boost,CAtlReg
风尚的风一阵一阵的刮过,但总不持久。人在风中,也难免会晕头转向。当咱们连年跟着群众媒体的营销手段去贯彻他们沉思熟虑的目的,当大家望着相似的街拍、烂大街的同款,为啥我们不去接纳、创建和谐的作风?
时髦易逝,风格永存。今日的指尖儿就为您介绍七款与时髦相关的App,让你在时尚的风中也能走出我。
其中 CAtlReg 和greta 是微软的,不过 greta
据说已经积年累月不有限帮忙,不可能在最新的编译器中编译.
1、Polyvore:人人都是内容创建者,时尚达人最爱的时装混搭社区
回想《风尚女魔头》中有一句话:不要觉得你和前卫非亲非故,你的每一个抉择,都是风尚的产物。”Polyvore”提供的就是挑选的机会。“Polyvore” 选用类似于杂志的来得形式,支持人们探索、挑选和进货前卫、美容以及家装产品。同时,也足以将欣赏的衣服举办铺垫并将作品分享。
不过自己看 PCRE 也是 2007 年的呀.
http://gnuwin32.sourceforge.net/packages/pcre.htm
①搜集单品和套装,创设你的附属品味数据
哦,应该从 http://www.pcre.org/ 进去,那么些诚然是本子未最新的.
初进入“Polyvore”,界面会提醒您选拔3套以上你欢娱的反衬作为参照来自动匹配你的作风。
据说
“pcre就是公认最牛的C语言的正则表明式库,Python、Perl等语言都是用它。”
不理解 php 用的是哪些库.
————————————————–
在app的Feed浮现页中是不断更新的单品和搭配,每张图片图片右上角都会有一个足以选取的象征“喜欢”的心,接纳后会存到你的窖藏里。通过对你的品尝数据的分析,Polyvore会在Just For You的页面中推送你喜爱的单品和搭配。
ATL正则表明式库使用
②多角度搜索浏览,一手精晓最in前卫和单品
作者:firingme
对风尚单品较为精准的抓取、评鉴、分类可以说是“Polyvore”最值得赞赏的地点。它的类目区分很细, 你能体悟的分类它都早已帮你列出来。其余,你可以挑选按流行势头(Trends)举行浏览,也得以查阅当下最热的单品和搭配。
转载:www.csdn.net
ATL中,由于ATL
Server的要求,必要对Client发送过来的地址、命令等繁杂文字字段新闻解码,而正则表明式是公认的最强大的文字解析工具,所以,ATL提供了一部分用来正则表明式的库方便了大家的做事。
③随机混搭、分享,挑逗你的时髦基因
1、 CATLRegExp类
相对而言国内一众时髦搭配类的app,“Polyvore”的优势除了它的类目内容,越来越多是它的扭转格局。“Polyvore”以UGC时装混搭的样式切入中高端女装导购市场,用户可以将衣服、鞋子、家居物品以及任何单品构成在同步开展铺垫和浮现,观察其完整效率。
声明:
template <class CharTraits=CAtlRECharTraits>
class CAtlRegExp;
初始化:
搭配好的风尚图片可以分享在选拔本身的社区里,也足以po到facebook,推特等应酬网站。所以,内容除了众多前卫杂志上的经典搭配,更加多是前卫达人们充满新意和美感的混搭,而生成内容的光热和暴露度自然也由浏览内容的用户们决定。
与微软的GRETA类库(微软切磋院生产的另一个正则表明式类库)分裂,CATLRegExp并没
有在构造函数中提供开端化匹配字符串的法门,而是让使用者通过调用它的Parse()方法,
使用正则表明式字符串作为参数,就可以社团出一个我们所急需的用来匹配的类,例如大家须要合营一种时光格式,可以是h:mm、也足以是hh:mm,那么大家得以这么构造大家的CAtlRegExp类:
CAtlRegExp <> re;
re.Parse( "{[0-9]?[0-9]}:{[0-9][0-9]}" );
2、Grabble:匹配个人偏好的翻牌子式购物应用,选用恐惧症的购物神器
ATL的正则表明式语法和Perl的正则表明式语法大同小异,可是有一个值得注意的地方就
是ATL中用大括号({
})表示其匹配字符串中的Group,大家地点的表明式中,就声称了2
个Group,一个是[0-9]?[0-9],另一个是[0-9][0-9]。
厌倦了图片陈列式的网购?受够了一件一件的choose?现在,你借使接纳“喜欢或不欣赏”, “Grabble”来救援你的选项恐惧症。
匹配:
调用CATLRegExp的Match()方法,就足以用该类来拓展匹配了,Match方法的原型如下:
BOOL Match(const RECHAR *szIn, CAtlREMatchContext<CharTraits> *pContext, const RECHAR **ppszEnd=NULL)
参数的意义很醒目,然则要求注意到第四个参数的型别是:const RECHAR *
szIN,是一个
const指针,那标志大家可以方便得利用std::string类的c_str()方法给其传递参数。
①“翻牌子”式购物,让直觉带您接纳
Match的结果通过第四个参数pContext所针对的CAtlREMatchContext<>类来重临,Match
的结果及其有关音讯都被寄存在CAtlREMatchContext类中,大家只要访问CAtlREMatchContext的不二法门和分子就可以赢得匹配
的结果。
Grabble取自英文Grab,抓的情致,而“Grabble”就为您提供了那种生动的随手抓起来的体验。你可以划过一件又一件app推送的行头,而只须要根据你的第一影象选拔“留下”(Grab)或“扔掉”(Throw)。那样的操作真的是简约又强行呢~
2、 CAtlREMatchContext类
自然,也不是“扔掉”就再也找不回来了,右上角的取消按钮仍是可以让您回去上一件货物。
声明:
template <class CharTraits=CAtlRECharTraits>
class CAtlREMatchContext
使用:
有意思的是Grabble“喜欢和不喜欢”的“翻牌子”情势和平素介绍过的Tinder相似,所以已经被人成为前卫界的约会神器。
CAtlREMatchContext通过m_uNumGroups成员以及GetMatch()方法向调用者提供匹配的结果音信。m_uNumGroups代表匹配上的Group有多少组,GetMatch()则基于传递给它的Group
的Index值,重回匹配上的字符串的pStart和pEnd指针,调用者有了那多少个指针,自然可以很方便的获取匹配结果。
②记录你的喜好,定制你的直属购物心得
3、 一个小示例
上面那几个事例来源于MSDN,演示了CATLRegExp和CAtlREMatchContext类的出色使用办法:
#include "stdafx.h"
#include <atlrx.h>
int main(int argc, char* argv[])
{
CAtlRegExp<> reUrl;
// five match groups: scheme, authority, path, query, fragment
REParseError status = reUrl.Parse(
"({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?" );
if (REPARSE_ERROR_OK != status)
{
// Unexpected error.
return 0;
}
CAtlREMatchContext<> mcUrl;
if (!reUrl.Match( "http://search.microsoft.com/us/Search.asp?qu=atl&boolean=ALL#results",
&mcUrl))
{
// Unexpected error.
return 0;
}
for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups;
++nGroupIndex)
{
const CAtlREMatchContext<>::RECHAR* szStart = 0;
const CAtlREMatchContext<>::RECHAR* szEnd = 0;
mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
ptrdiff_t nLength = szEnd - szStart;
printf("%d: \"%.*s\"\n", nGroupIndex, nLength, szStart);
}
}
当你划过一件又一件的衣裳的时候,App就默默地记起你的喜好,然后客制给您方便的网路购物网站。如果你滑过的事物是你欢愉的,将会收藏在「Grab on the Go」。因为可以直接在App里头购物,不用把型号记下来,几乎是体贴国外网购的人的一大福音。
Output
0: “http”
1: “search.microsoft.com”
2: “/us/Search.asp”
3: “qu=atl&boolean=ALL”
4: “results”
事例中所用的正则表明式为:
③贴心提醒和资讯,降价折扣一手领会
({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?
除去帮您打通很多货品外,提示你商品的打折音讯也是它引发人的由来。App里的编制要旨也会发送每一日选取,而当有您喜爱的货色在网站特价的时候,App会发出自动提示您该购买了。真是有了“Grabble”,小姑就再也不用担心我miss掉喜欢的打折商品了233333~
以()为分界标志,共分为5组,第一组是{[^:/?#]+}:,^是“非”前面成员的情致,那么也就是说第一组从上马开头,一贯到:、/、?、#中间任何一个了结。联系后边的待匹配字符串就足以得出所匹配的结果是http。
4、 自定义匹配字符串的缩写形式
为了方便,ATL已经帮大家定义了部分平时利用的正则表达式的简约格局。例如:\d代表([0-9])、\n代表(\r|(\r?
\n))等。那个缩写格局都反映在CAtlRECharTraitsA/CAtlRECharTraitsW等类中,把那个类作为模板参数传递给
CATLRegExp和 CAtlREMatchContext,大家就足以定义自己的匹配字符串缩写了。
只是,近年来在“Grabble”上,任何规模的公司都得以体现货品,大致没有筛选机制,即使可以在中期有限支撑有足够的货色来源。可是随后不可防止的就是线上货品长短不一,调子不一。
class CAtlRECharTraitsA
{
static const RECHARTYPE** GetAbbrevs()
{
static const RECHARTYPE *s_szAbbrevs[] =
{
"a([a-zA-Z0-9])", // alpha numeric
"b([ \\t])", // white space (blank)
"c([a-zA-Z])", // alpha
"d([0-9])", // digit
"h([0-9a-fA-F])", // hex digit
"n(\r|(\r?\n))", // newline
"q(\"[^\"]*\")|(\''''[^\'''']*\'''')", // quoted string
"w([a-zA-Z]+)", // simple word
"z([0-9]+)", // integer
NULL
};
return s_szAbbrevs;
}
};
上述是atlrx.h摘录下来的代码,可以很精通地来看ATL是由此一个GetAbbrevs()函数
来定义字符串缩写的。要定义新的缩写格局,大家只要求那样:
么么哒有话说
class MyRegTraits : public ATL::CAtlRECharTraitsA
{
public:
static const RECHARTYPE** GetAbbrevs()
{
static const RECHARTYPE *s_szAbbrevs[] =
{
"a([a-zA-Z0-9])", // alpha numeric
"b([ \\t])", // white space (blank)
"c([a-zA-Z])", // alpha
"d([0-9])", // digit
"h([0-9a-fA-F])", // hex digit
"n(\r|(\r?\n))", // newline
"q(\"[^\"]*\")|(\''''[^\'''']*\'''')", // quoted string
"w([a-zA-Z]+)", // simple word
"z([0-9]+)", // integer
"e([0-8]+)", //自己添加
NULL
};
return s_szAbbrevs;
}
};
乘胜大家对世界的穿梭探索,大家对社会风气也经历了再认识的长河。
让大家温馨定义的Trait类继承自CAtlRECharTraitsA,然后改写GetAbbrevs()函数,扩大一些亟待的简写就足以被选用了。下边的代码示例了利用了大家和好的类中定义的“\e”简
略表达:
最早,时髦是上流社会的一种消遣,现在,前卫是一种生存方法。
int main ( )
{
ATL::CAtlRegExp < MyRegTraits > re ;
re.Parse( "\\e+" );
ATL::CAtlREMatchContext < MyRegTraits > mc ;
BOOL res1 = re.Match( "678", &mc ); // returns TRUE: successful match
res1 = re.Match ( "999" , &mc ) ; // returns FALSE:match fail
}
么么哒认为,大家每个人都是风尚的培育者。那就拉动一个有趣的话题:风尚到底是主旨化的,如故去中央化的?在时髦圈的人群里,他们明明认为风尚是被创立出来的。但不可不可以认的是,大家各类人也正在插足时髦趋向的营造。
要是在协会ATL::CAtlRegExp和 ATL::CAtlREMatchContext类时,传递过去我们的
MyRegTraits类作为Traits的参数,就可以直接利用自己定义的概括符号了。
就连Apple 沃特ch都能够被风尚圈看低的时期,倘若您相信时髦是有权威的,就把温馨提交权威,跟随就好了。
5、 结尾
借使你认为自己的风骨就是一种前卫,就可以遵守自己的法门形成极致:自己喜欢才是最好。
就算现在C++的社区里早已拥有了Boost::regex,GRETA等丰盛闻名的正则表达式库,不过作为VC++自带的模板库,ATL中的正则表明式库如故给我们的行事提供了庞然大物的方便。由于
ATL是微软官方公布的Library,所以它拥有优质的文档说明、严厉的测试以及微软官方的
技术帮忙。其余在用ATL开发COM组件的时候,更可以便宜地接纳正则库的英雄威力。
大家会发现,时髦总是在挑战并存的主流,时髦就代表对现状的不满。风尚总是带有反叛的气息,就像是海盗在挑战平凡。
是因为自己学识所限,小说内容错在所难免,如有批评指正之词,请mail
:firingme@sina.com
肯定,女性是风尚的关键消费者。 时髦对于一个妇女来讲意味着什么?并不仅仅是非凡的行装,而是在寻找突出中自己的榜样,以及杰出的生存方式。是梦想找到最想要的协调。因而,一个好的前卫APP,不该只是是提供品牌和衣服的陈列,更应有是有灵魂的、有生存的。
语言,时髦符号也是一种语言。是你的个性化自我的抒发。分裂的符号都在分解你协调。
那就是说,你会挑选如何APP来寻觅和假释你的前卫信号吧?