摘要: 别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并不像你想像中的那么困难。当然,如果你看完了这篇教程之后发现自己明白了很多,却又几乎什么都记不得,那也是很正常的--其实我认为没接触过正则表达式的人在看完这篇教程后能把提到过的语法记住80%以上的可能性为零。这里只是让你明白基本道理,以后你还需要多练习,多查资料,才能熟练掌握正则表达式。
阅读全文
南极地区连续爆发反常暴风雨,导致成千上万只新生小企鹅活活冻死。据估计,经此一难,南极企鹅数目将锐减两成。南极专家认为,这是气候变化给南极地区带来的又一灾难性影响。
南极下雨多过下雪
科学家相信,受灾最严重的阿德利企鹅数目将下降至80%,如果天气短期内不能转好,情况可能更严重,不到10年,这一物种或将从地球上消失。
在过去50年里,南极大陆的平均温度上升了3摄氏度,达到-14.7摄氏度,冬季频发的暴风雪渐渐被更加冰冷刺骨的暴风雨所代替。阿德利企鹅刚出生时仅有薄薄一层保暖皮毛,小企鹅需要40天的时间才能长出防水的羽毛,然而连日暴雨将整个巢穴都浸湿了,企鹅父母在时还能为子女遮风挡雨,一旦离巢觅食,小企鹅往往会因为体温过低而死。
“长期以来人们注意到了冰架在溶解,但南极冷雨却是前所未有的新现象,企鹅正面临寒冷致死的威胁。”刚刚从南极归来的纽约探险家强·鲍尔马斯特说,“它们的皮毛可以在大雪中保护自己,却不能应付暴雨,这就好像一个穿着厚夹克却被雨淋湿的人一样。”
帝企鹅乐园遭摧毁
奥斯卡获奖纪录片《帝企鹅日记》描绘了憨态可掬的帝企鹅生存及繁衍的场景,令人印象深刻,然而西雅图华盛顿大学生物学教授笛伊·波尔斯曼痛心指出,2006年12月,也就是这部电影拍摄不到两年后,她再抵达当年的拍摄地南极南部,“已经完全认不出这就是纪录片里的企鹅乐园。”笛伊说,她完全没看到帝企鹅幼仔,也看不到浮冰,冰山数目大大减少。据悉,去年9月份,也就是帝企鹅育儿期间,当地曾被一场大型暴风雨所袭击,“极少企鹅幼仔能够幸存。”
“看见企鹅们脚下都是下一代的残骸,这才是我所见过气候变化最令人震撼以及最直接的证据。”鲍尔马斯特说。
1,安装
Web Deploy Projects2,在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>
原始来源:
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)