@"[\s\S]*?(?<content>\<div id='Content'\>\<div[\s\S]*?\<\/div\>[\s\S]*?\<\/div\>)[\s\S]*";
上边是我写的一个正则表达式,然后匹配一段文本,因为文本中实际不存在这样的匹配,所以应该说就找不到匹配,但是用Regex.IsMath(txtConten)这样以行代码的时候,程序总是失去响应,不知道为什么,我现在需要的不是正确的表达式,而是,如果文本中不存在这样的匹配的时候,应该怎么办,才不至于使程序失去响应?
上边是我写的一个正则表达式,然后匹配一段文本,因为文本中实际不存在这样的匹配,所以应该说就找不到匹配,但是用Regex.IsMath(txtConten)这样以行代码的时候,程序总是失去响应,不知道为什么,我现在需要的不是正确的表达式,而是,如果文本中不存在这样的匹配的时候,应该怎么办,才不至于使程序失去响应?
解决方案 »
- 怎么能让页面不生成viewstate
- |M| 自已帮别人做了一个网上商城,但现在他想要添加多点功能,但因为原来的代码写得很乱,改成来很是麻烦,现在我想问一下大家在做网上商城的
- Asp.net 页面首页自定义调用的问题, Asp中很方便,.Net中如何实现?
- 要实现查询几个表时的一个问题,老是想不通
- 快疯掉了:我的.net2003隔上几天运行项目时就会出现“无法在web服务器上启动调试,不支持该接口”的弹出窗口。
- oleDb简单的插入新记录,为什么总是出错???
- 如何设计采购主表和采购明细表的界面?
- 关于ASP.net MVC3及JavaScript用于深入理解的书籍,哪些书好些呢?
- Message Queue问题
- Datalist的高难度问题
- 求匹配<img ....></img> 的正则表达式
- 如何选择datagrid的列表值???
"<div id='Content'><div>abd</div>sdfdf</div>fsdfdsf",
"xxxxxx xxxxx xxxx xxxxx"
};
Regex re = new Regex(@"[\s\S]*?(?<content>\<div id='Content'\>\<div[\s\S]*?\<\/div\>[\s\S]*?\<\/div\>)[\s\S]*", RegexOptions.IgnoreCase);
foreach (string s in slist)
{
Console.WriteLine("{0} matches? {1}", s, re.IsMatch(s));
}
我觉得这很可能是FCL的一个缺陷
想了一下,最开头使用[\s\S]*或者[\s\S]*?,可以匹配所有文本,在这个地方分析器为了尽量匹配所有表达式,会在几乎每个点进行回逆查找,而如果要匹配的文本很大,那么就会很耗时实际上去掉开头的[\s\S]*?的表达式也能满足你的要求
对于较小的字符串来说不会出现问题,但是就像Sunmast(速马.上海)说的测试较长的HTML源码确实会导致程序失去响应