.Net高级技术

本次课程中讲的有的东西都是根据初学者的认知规律进行了调整,并不是严谨的,比如很多地方在多AppDomain条件下很多说法就不对了,但是说严谨了大家就晕了,因此继续不严谨的讲吧。

很多面试题都在这阶段的课程中。

.Net高级技术属于拔高内容,根据自己的基础决定学习深度。

参考教材: 《C#高级编程》 《C#图解教程》 《CLR Via C#》

正则表达式前奏:地狱

需求1:“192.168.10.5[port=8080]”,这个字符串表示IP地址为192.168.10.5的服务器的8080端口是打开的,请用程序解析此字符串,然后打印出“IP地址为***的服务器的***端口是打开的”。

需求2:“192.168.10.5[port=21,type=ftp]”,这个字符串表示IP地址为192.168.10.5的服务器的21端口提供的是ftp服务,其中如果“,type=ftp”部分被省略,则默认为http服务。请用程序解析此字符串,然后打印出“IP地址为***的服务器的***端口提供的服务为***”

需求3:判断一个字符串是否是Email?必须含有@和.、不能以@或者.开始或者结束、@要在最后一个.之前

需求4:从一个文本中提取出所有的Email:我有全部333M的照片,要的给我发email:[email protected]。我也要[email protected],[email protected],楼主好人:[email protected]。 需求5:提取网页中的所有图片、超链接。

正则表达式入门:天堂

正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。javascript中还会用到。

一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

就像通配符“*.jpg”、“%ab%”,它是对字符串进行匹配的特殊字符串 正则表达式是非常复杂的,不要希望一次都掌握,理解正则表达式能做什么(字符串的匹配、字符串的提取、字符串的替换),掌握常用的正则表达式用法,以后用到再查就行。

找工作的亮点。后面项目中的敏感词过滤、Validator等也会涉及到正则表达式。

元字符1

要想学会正则表达式,理解元字符是一个必须攻克的难关。不用刻意记

.:匹配除\n之外的任何单个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。

[ ] :匹配括号中的任何一个字符。例如正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0-9]可以匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就可以匹配“a0c”、“a1c”、“a2c”等字符串;还可以制定多个区间,例如“[A-Za-z]”可以匹配任何大小写字母,“[A-Za-z0-9]”可以匹配任何的大小写字母或者数字。

( ) :将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。改变优先级、定义提取组两个作用。

| :将两个匹配条件进行逻辑“或”运算。‘z|food‘ 能匹配 "z" 或 "food"。‘(z|f)ood‘ 则匹配 "zood" 或 "food"。

元字符2

*:匹配0至多个在它之前的子表达式,和通配符*没关系。例如正则表达式“zo*”能匹配 “z” 、“zo”以及 “zoo”;因此“.*”意味着能够匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。

+ :匹配前面的子表达式一次或多次,和*对比(0到多次)。例如正则表达式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配"z"。

? :匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。一般用来匹配“可选部分”。

{n} :匹配确定的 n 次。"zo{2}"→zoo。例如,“e{2}” 不能匹配“bed”中的“e”,但是能匹配“seed”中的两个“e”。

{n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。

{n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”将匹配“seeeeeeeed”中的前三个“e”。

元字符3

^(shift+6) :匹配一行的开始。例如正则表达式“^regex”能够匹配字符串“regex我会用”的开始,但是不能匹配“我会用regex”。 ^另外一种意思:非!(暂时不用理解)

$ :匹配行结束符。例如正则表达式“浮云$” 能够匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀”

简写表达式

注意这些简写表达式是不考虑转义符的,这里的\就表示字符\,而不是C#字符串级别的\,在C#代码中需要使用@或者\双重转义。区分C#级别的转移和正则表达式级别的转移,恰好C#的转义符和正则表达式的转义符都是\而已。正则表达式的转移是在C#之后的(层层盘剥)。把C#的转义符想成%就明白了。在C#看来@"\-"就是\-这个普通的字符串,只不过在正则表达式分析引擎看来他有了特殊含义。

"\\d"或者@"\d"

\d:代表一个数字,等同于[0-9]

\D:代表非数字,等同于[^0-9]

\s:代表换行符、Tab制表符等空白字符

\S:代表非空白字符

\w:匹配字母或数字或下划线或汉字,即能组成单词的字符

\W:非\w ,等同于[^\w]

d:digital;s:space、w:word。大写就是“非”

.Net高级技术

时间: 2024-11-05 15:58:39

.Net高级技术的相关文章

GridView 高级技术

GridView 高级技术 汇总脚注 GridView 的主要目标是显示一组记录,但是你还可以加入一些有趣的信息,如汇总数据.需要如下的操作: 设置 GridView.ShowFooter 为 true ,这样可以显示脚注行(但没有数据) 在 GridView.FooterRow 中加入内容 本例假设正在处理产品列表,一个简单的汇总可以显示产品总价或均价.第一步是确定何时计算这个信息.如果正使用手工绑定(DataSource),那么可以在数据对象绑定到 GridView 之间就读取它的值并进行计

分享Java企业级开发必备高级技术(WebLogic、Tomcat集群,Apach调优)

Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击.在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景,那么滋生的基于java项目也越来越多,对java运行环境的要求也越来越高,很多java的程序员只知道对业务的扩展而不知道对java本身的运行环境的调试,例如虚拟机调优,服务器集群等,所以也滋生本门课程的产生. Java企业级开发必备高级技术(WebLogic.Tomcat集群,Apach调优),刚刚买的,这个教程讲的很好,高清完整版,现低价转两个播放码,可以先

【ASP.NET Identity系列教程(三)】Identity高级技术

注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序的用户管理,以及实现应用程序的认证与授权等相关技术,译者希望本系列教程能成为掌握ASP.NET Identity技术的一份完整而有价值的资料.读者若是能够按照文章的描述,一边阅读.一边实践.一边理解,定能有意想不到的巨大收获!希望本系列博文能够得到广大园友的高度推荐. 15 Advanced ASP

spring(7)spring mvc 的高级技术

[0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  "spring(7)spring mvc 的高级技术" 的相关知识: 2)本文将会看到如何编写控制器来处理文件上传,如何处理控制器所抛出的异常,以及如何在模型中传递数据,使其能够在重定向之后仍然存活: [1]spring mvc 配置的替代方案 [1.1] 自定义 DispatcherServlet配置 [1.2]添加其他的Servlet 和 Fil

Delphi2010中DataSnap高级技术

Delphi2010中DataSnap高级技术 日期:2010年12月1日 作者:SUNSTONE原创 人气:13498 查看:[大字体 中字体 小字体]  (1)—为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7该下岗了. DataSnap有三种服务模式,其中Service Application方式建立的windows服务没有描述,描述部分是空的,感觉总是欠缺点什么. 现找到办法添加描述: p

.net高级技术(class0515)

本次课程中讲的有的东西都是根据初学者的认知规律进行了调整,并不是严谨的,比如很多地方在多AppDomain条件下很多说法就不对了,但是说严谨了大家就晕了,因此继续不严谨的讲吧. 很多面试题都在这阶段的课程中. .Net高级技术属于拔高内容,根据自己的基础决定学习深度. 参考教材: <C#高级编程> <C#图解教程> <CLR Via C#> 正则表达式前奏:地狱 需求1:“192.168.10.5[port=8080]”,这个字符串表示IP地址为192.168.10.5

如鹏网学习笔记(三).Net高级技术

net高级技术 一.多项目开发 1,添加对项目的引用 //新建一个类库,用来放公共的要使用的类,使用的时候别的项目去引用它 //using 类库文件; 注意事项:注意被引用的类要使用public修饰 被引用的程序集中的类的修饰符,如果不写的话,默认是internal. 效果是,只有当前程序集(类库)内部才能访问. 2,多项目时候的配置文件的读取问题 a,只有主项目的配置文件才起作用(当前启动的) b,config文件不能改名,不能建多个config,在config里面也不能建多个AppSetti

【Spring】Spring MVC高级技术

前言 前面学习了简单的Spring Web知识,接着学习更高阶的Web技术. 高级技术 Spring MVC配置的替换方案 自定义DispatcherServlet配置 在第五章我们曾编写过如下代码. public class SpitterWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasse

spring-mvc高级技术

Spring MVC高级技术包括但不限于web.xml配置.异常处理.跨重定向请求传递数据 1.web.xml文件的配置 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <context-param> <