(?is) <title>(?> <title[^>]*>(? <o>)| </title>(? <-o>)|(?:(?! </?title\b).)*)*(?(o)(?!)) </title>哪们大牛可以给俺讲讲这个正则的意思,比如:(?is)有啥用,还有后面的
解决方案 »
- vs2008连接SQL server2005问题
- mvc框架用lambda表达式写多表查询,怎么写?
- 2007最后一片豆腐--【Url地址重写,利用HttpHander手工编译页面并按需生成静态HTML文件】【另祝大家新年快乐,心想事成】
- 调式程序出现以下错误:试图运行项目出错;无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证
- ##--如何比DataGrid动态添加一行--##
- 在sql2005下一个标准的存储过程是怎样的?
- 用BoundColumn可以更新,但用DataBinder.Eval却不行,为什么?哪里错了???
- 我向txt文件中写完东西 再重定向它 然后抱错 如何解决
- 我这样写对吗?
- 救命啊,关于aspnet_wp.exe不能启动!
- 问几个简单的asp.net问题
- 如何用手机在本地测试wap
(?s) 是单行模式,改变小数点的匹配行为,使小数点可以匹配任意字符参考
.NET正则基础之——.NET正则匹配模式 至于后面的表达式,这个正则书写很像我的风格,但我应该没写过这样的正则,因为title是基本上不会涉及到嵌套的,也就用不到平衡组,简单的用个非贪婪模式就可以了
(?is)<title>(?<title>.*?)</title>如果对平衡组感兴趣,参考
.NET正则基础之——平衡组
实际运行之后的title有什么不同
涉及到title标签时,基本上都是提取,而title一般是不会出现嵌套的,至少我还没见到过,所以使用简单的非贪婪模式,把内容提取出来就是了至于说到(?is),主要是html的代码并不都是很规范的,有时标签可能会出现大写,甚至大小写混合的情况,所以用了(?i)来忽略大小写
(?s)主要是考虑用小数点来匹配任意字符,不过title中几乎不会出现换行,所以这个加不加也无所谓了
Regex reg = new Regex(@"(?is)<title>(?<title>.*?)</title>");
Match m = reg.Match(yourStr);
if (m.Success)
{
richTextBox2.Text = m.Groups["title"].Value;
}至于楼主所给的那个正则,因为这种需求中用不到平衡组,而且我的博客中也基本上覆盖到了,所以也就不多解释了正则根据实际需求来写,只考虑必要的情况,写最适合的正则
就是一个不区分大小写,并且可以匹配所有行。然后取出页面上的<title>标签及标签内的内容;