仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 565|回复: 6
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之.NET正则表达式利用初级技能之反向援用...

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。初级|技能|正则  反向援用,指把婚配出来的组援用到表达式自己别的中央,好比,在婚配HTML的标志时,我们婚配出一个<a>,我们要把婚配出来的a援用出来,用来找到</a>,这个时分就要用到反向援用。

  语法

  a、反向援用编号的组,语法为
umber

  b、反向援用定名的组,语法为k<name>

  举例

  a、婚配成对的HTML标签

@"<(?<tag>[^s>]+)[^>]*>.*</k<tag>>"

  b、婚配两个两个堆叠呈现的字符

publicstaticvoidMain()
{
strings="aabbc11asd";
Regexreg=newRegex(@"(w)1");
MatchCollectionmatches=reg.Matches(s);
foreach(Matchminmatches)
Console.WriteLine(m.Value);
Console.ReadLine();
}
  前往了局为aabb11

  帮助婚配组

  以下几种组布局,括号中的Pattern都不作为婚配了局的一部分举行保留

  1、正声明(?=)

  涵义:括号中的形式必需呈现在声明右边,但不作为婚配的一部分

publicstaticvoidMain()
{
strings="C#.net,VB.net,PHP,Java,JScript.net";
Regexreg=newRegex(@"[w#]+(?=.net)",RegexOptions.Compiled);
MatchCollectionmc=reg.Matches(s);
foreach(Matchminmc)
Console.WriteLine(m.Value);
Console.ReadLine();
//输入C#VBJScript
}
  能够看到婚配引擎请求婚配.net,但却不把.net放到婚配了局中

  2、负声明(?!)

  涵义:括号中的形式必需不呈现在声明右边

  下例演示怎样获得一个<a>标签对中的全体内容,即便个中包括其余HTMLtag。

publicstaticvoidMain()
{
stringnewsContent=@"url:<ahref=""1.html""><imgsrc=""http://www.webjx.com/htmldata/2006-03-23/http://www.webjx.com/htmldata/2006-03-23/1.gif"">test<spanstyle=""color:red;"">Regex</span></a>.";
RegexregEnd=newRegex(@"<s*a[^>]*>([^<]|<(?!/a))*<s*/as*>",RegexOptions.Multiline);

Console.WriteLine(regEnd.Match(newsContent).Value);
//Result:<ahref="1.html"><imgsrc="http://www.webjx.com/htmldata/2006-03-23/http://www.webjx.com/htmldata/2006-03-23/1.gif">test<spanstyle="color:red;">Regex</span></a>
Console.ReadLine();
}
  3、反向正声明(?<=)

  涵义:括号中的形式必需呈现在声明左边,但不作为婚配的一部分

  4、反向负声明(?<!)

  涵义:括号中的形式必需不呈现在声明左边

  非回溯婚配

  语法:(?>)

  涵义:该组婚配后,其婚配的字符不克不及经由过程回溯用于前面的表达式的婚配。呵呵,光看这句话一定弄不懂,我现在为了弄懂这个也花了很多的工夫,仍是经由过程实例来讲明吧:
"www.csdn.net"能够经由过程@"w+.(.*).w+"来婚配,却不克不及经由过程@"w+.(?>.*).w+"来婚配!为何呢?

  缘故原由是正则婚配是贪心的,婚配时它会尽量多的婚配最多的了局,以是,上例两个正则式中的.*城市把csdn.net婚配完,这个时分,第一个表达式在入手下手婚配时发明.w+没得字符给它婚配了,以是它会举行回溯,所谓回溯,就是把.*婚配的了局往回推,回推留出来的字符再用来婚配.w+,直到.w+婚配乐成,全部表达式前往乐成的婚配了局。而第二个表达式,因利用的长短回溯婚配,以是,.*婚配完后,不同意经由过程回溯来婚配.w+,以是全部表达式婚配失利。

  请注重,回溯婚配是很华侈资本的一种婚配体例,以是,请只管制止您的正则式要经由过程回溯来乐成婚配,如上例,能够换成@"w+.([^.]+.)+w+"+"。c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 16:32:29 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
透明 该用户已被删除
板凳
发表于 2015-1-22 12:50:35 | 只看该作者
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
金色的骷髅 该用户已被删除
地板
发表于 2015-1-31 06:47:49 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
柔情似水 该用户已被删除
5#
发表于 2015-2-17 22:54:18 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-12 16:36:52 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
小妖女 该用户已被删除
7#
发表于 2015-3-20 00:23:17 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-29 06:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表