deerchao的blog

Be and aware who you are.

置顶随笔

[置顶]正则表达式30分钟入门教程

     摘要: 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并不像你想像中的那么困难。当然,如果你看完了这篇教程之后发现自己明白了很多,却又几乎什么都记不得,那也是很正常的--其实我认为没接触过正则表达式的人在看完这篇教程后能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本道理,以后你还需要多练习,多查资料,才能熟练掌握正则表达式。  阅读全文

posted @ 2006-08-24 22:04 deerchao 阅读(11751) | 评论 (395)编辑

2008年7月14日

关注我们共有的家园,别让企鹅成为传说

南极地区连续爆发反常暴风雨,导致成千上万只新生小企鹅活活冻死。据估计,经此一难,南极企鹅数目将锐减两成。南极专家认为,这是气候变化给南极地区带来的又一灾难性影响。脚下就是幼禽的尸骸(红圈内),企鹅父母悲鸣。

南极下雨多过下雪

科学家相信,受灾最严重的阿德利企鹅数目将下降至80%,如果天气短期内不能转好,情况可能更严重,不到10年,这一物种或将从地球上消失

在过去50年里,南极大陆的平均温度上升了3摄氏度,达到-14.7摄氏度,冬季频发的暴风雪渐渐被更加冰冷刺骨的暴风雨所代替。阿德利企鹅刚出生时仅有薄薄一层保暖皮毛,小企鹅需要40天的时间才能长出防水的羽毛,然而连日暴雨将整个巢穴都浸湿了,企鹅父母在时还能为子女遮风挡雨,一旦离巢觅食,小企鹅往往会因为体温过低而死。科学家担忧,不出10年,该种企鹅或因气候变化而灭绝。

“长期以来人们注意到了冰架在溶解,但南极冷雨却是前所未有的新现象,企鹅正面临寒冷致死的威胁。”刚刚从南极归来的纽约探险家强·鲍尔马斯特说,“它们的皮毛可以在大雪中保护自己,却不能应付暴雨,这就好像一个穿着厚夹克却被雨淋湿的人一样。”

帝企鹅乐园遭摧毁

奥斯卡获奖纪录片《帝企鹅日记》描绘了憨态可掬的帝企鹅生存及繁衍的场景,令人印象深刻,然而西雅图华盛顿大学生物学教授笛伊·波尔斯曼痛心指出,2006年12月,也就是这部电影拍摄不到两年后,她再抵达当年的拍摄地南极南部,“已经完全认不出这就是纪录片里的企鹅乐园。”笛伊说,她完全没看到帝企鹅幼仔,也看不到浮冰,冰山数目大大减少。据悉,去年9月份,也就是帝企鹅育儿期间,当地曾被一场大型暴风雨所袭击,“极少企鹅幼仔能够幸存。”

“看见企鹅们脚下都是下一代的残骸,这才是我所见过气候变化最令人震撼以及最直接的证据。”鲍尔马斯特说。

posted @ 2008-07-14 10:17 deerchao 阅读(36) | 评论 (0)编辑

2008年7月11日

bookmark: partitioned tables in sql server 2005


http://www.simple-talk.com/sql/sql-server-2005/partitioned-tables-in-sql-server-2005/

posted @ 2008-07-11 00:57 deerchao 阅读(32) | 评论 (0)编辑

2008年6月22日

发布网站时自动切换connectionString

1,安装 Web Deploy Projects
2,在VS里右击Web项目, Add Web Deployment Project, 确定
3,设置新添加的项目的属性. 其中的"Compilation"页中 Output Path即为要发布到的目录.
4,在项目属性的Deployment页中,选中"Enable Web.config file section replacement",在下面输入"connectionStrings=connectionStrings.config;",确定
5,在原来的Web项目中添加一个connectionStrings.config文件,在里面输入发布版/生产环境版的connectionStrings:

<connectionStrings>
    
<add  />
</connectionStrings>

6,原来的Web项目里的web.config文件里,connectionStrings节里只需要包含开发时用到的连接字符串.
7,要发布时,执行一下deployment项目的"生成"操作,即可从自己设置的Output Path里找到可以直接发布的文件和目录结构了

另,如果一些文件不希望发布(比如文件file1.name和file2.name,目录dir1.name和dir2.name ),可以打开deployment项目的项目文件,通过下面的修改来实现:
  <ItemGroup>
    
<RemoveFileAfterBuild Include="$(OutputPath)\file1.name"/>
    
<RemoveFileAfterBuild  Include="$(OutputPath)\file2.name"/>
    
<RemoveDirAfterBuild  Include="$(OutputPath)\dir1.name"/>
    
<RemoveDirAfterBuild  Include="$(OutputPath)\dir2.name"/>
  
</ItemGroup>

  
<Target Name="AfterBuild">
    
<RemoveDir Directories="@(RemoveDirAfterBuild)" />
    
<Delete Files="@(RemoveFileAfterBuild)" />
  
</Target>

posted @ 2008-06-22 00:34 deerchao 阅读(88) | 评论 (0)编辑

2008年6月16日

泛型与反射

TypeToString()ContainsGenericParametersGenericParameterAttributesGenericParameterPositionIsGenericType
Dictionary<,>Dictionary~2[TKey,TValue]Y--Y
<TkeyYNone0N
>TvalueYNone1N
Dictionary<string,int>Dictionary~2[String,Int32]N--Y
<stringStringN--N
int>Int32N--N
TypeIsGenericParameterIsGenericTypeDefinitionGetGenericArguments()GetGenericParameterConstraints()GetGenericTypeDefinition()
Dictionary<,>NY[TKey,TValue]-Dictionary~2[TKey,TValue]
<YN[][]-
>YN[][]-
Dictionary<string,int>NN[String,Int32]-Dictionary~2[TKey,TValue]
<stringNN[]--
int>NN[]--

posted @ 2008-06-16 11:23 deerchao 阅读(67) | 评论 (0)编辑

2008年6月14日

强悍的电子邮件地址(email address)正则表达式

原始来源: RegexLib.com
修改后加入了两个新功能:
1,匹配类似 "lc <deerchao@xxx.com>" 这样的包含姓名的格式.
2,添加了四个命名组: name, email, user, domain. 这样可以方便取出相应的信息.

Regex re = new Regex(@"^((?'name'.+?)\s*<)?(?'email'(?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|""(?'user'(?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*""\x20*)*(?'angle'<))?(?'user'(?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|""((?=[\x01-\x7f])[^""\\]|\\[\x01-\x7f])*"")@(?'domain'((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|\\[\x01-\x7f])+)\])(?'angle')(?(name)>)$", RegexOptions.Multiline | RegexOptions.ExplicitCapture);
MatchCollection mc 
= re.Matches(@"l c <abc@example.com>
Abc@example.com
aBC@example.com
abc.123@example.com
");
foreach (Match ma in mc)
{
  
}



原表达式的最大优点就是匹配能力强大,能吃下各种符合规范(RFC2882)的表达式.
匹配WikiPedia上的10/11个合法邮件地址格式,不合法的一个也不匹配:

Valid e-mail addresses

  • abc@example.com
  • Abc@example.com
  • aBC@example.com
  • abc.123@example.com
  • 1234567890@example.com
  • _______@example.com
  • abc+mailbox/department=shipping@example.com
  •  !#$%&'*+-/=?^_`.{|}~@example.com (all of these characters are allowed)
  • "abc@def"@example.com (anything goes inside quotation marks)
  • "Fred Bloggs"@example.com
  • "%()[]\;:,<>"@example.com

Invalid e-mail addresses

  • Abc.example.com (character @ is missing)
  • Abc.@example.com (character dot(.) is last in local part)
  • Abc..123@example.com (character dot(.) is double)
  • A@b@c@example.com (only one @ is allowed outside quotations marks)
  •  %()[]\;:,<>@example.com (none of the characters before the @ is allowed outside quotation marks)

posted @ 2008-06-14 15:24 deerchao 阅读(105) | 评论 (0)编辑

<2008年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

公告

给网络添加价值,就是让自己增加价值.

本博客所有内容,均为原创或对互联网已有资源的再加工,希望对你有用.在声明原作者的前提下,你可以任意使用,但本人对其正确性,使用的后果等不做任何担保,也不负任何责任.

正则表达式30分钟入门教程 v2.21 2007-8-3

I Want Spec#!

与我联系

常用链接

留言簿(53)

我管理的小组

我的标签

随笔档案(117)

文章分类(9)

文章档案(9)

新闻档案(9)

Links

积分与排名

最新评论

评论排行榜

60天内阅读排行