c# 正则表达式如何处理换行符?

我们要分析网页,把整个网页内容作为匹配源,但是c#的正则表达式是默认以一行为单位的,使用?RegexOptions.Multiline 也没有实质性作用(它知识改变了^和$的行为)

只要在正则表达式前面加上(?s)这个选项即可

参考资料:http://hi.baidu.com/hetaoos/blog/item/7936a80faec513e9ab6457b8.html


string
s = ".......";

string
r = @"(?s)(?i)导演:\s*</span>\s*<span\s+class=""m_c"">\s*<span><a.*?>(?<director>.*?)</a>";

string
t = Regex.Match(s, r).Groups["director"];

Console.WriteLine(t);

// (?s) 点号匹配一切字符(含换行符)

// (?i) 进行不区分大小写的匹配

// (?<name>...) 命名捕获

?
?

?
?

????????????Regex r = new
Regex("(?s)(?i)id=\"__VIEWSTATE\" value=\"(?<__VIEWSTATE>[^\"]+)\" />.+"
+

????????????????"<span id=\"lbinfo\">(?<lbinfo>[^<]+)</span>.+"
+

????????????????"<span id=\"lbIP\">(?<lbIP>[^<]+)</span>.+"
+

????????????????"<span id=\"lbuserid\">(?<lbuserid>[^<]+)</span>.+"
+

????????????????"<span id=\"lbRealName\">(?<lbRealName>[^<]+)</span>.+"
+

????????????????"<span id=\"lbRemainMoney\">(?<lbRemainMoney>[^<]+)</span>.+"
+

????????????????"<span id=\"lbFreshTime\">(?<lbFreshTime>[^<]+)</span>.+"
+

????????????????"<span id=\"LNowState\">(?<LNowState>(开放|关闭)IP成功).+</span>.+"
+

????????????????"id=\"__EVENTVALIDATION\" value=\"(?<__EVENTVALIDATION>[^\"]+)\" />", RegexOptions.Compiled);

  
?

时间: 2024-11-10 11:20:40

c# 正则表达式如何处理换行符?的相关文章

在Visual Studio中使用正则表达式匹配换行和批量替换

系统环境:Windows 8.1 Enterprise Update 2 x64 开发环境:Mircosoft Visual Studio Ultimate 2013 Update 2 RC 问题:如何在Visual Studio中使用正则表达式匹配换行符,空白符,Tab符等特殊符号,并且在当前文档或当前项目或整个解决方案中批量替换你指定的代码文字? 例子: 1 /// <summary> 2 /// 根据条件查询表中所有数据 3 /// </summary> 4 /// <

正则表达式匹配包括换行符的所有字符

今天在Java中想使用正则表达式来获取一段文本中的任意字符. (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符. 查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则: ([\s\S]*)正则表达式匹配包括换行符的所有字符,布布扣,bubuko.com

含有换行符的正则表达式如何匹配

含有换行符的正则表达式如何匹配: \s\S \S是各种空白字符,比如\n\t之类的,而\s是^\S 点号( . )可以匹配换行符之外的任何单个字符,被称之为通配符. 匹配包含\n在內的任何字符用 (.|\n). import re strvar = """hello world!""" patt = r'(.|\n)*' rs = re.match(patt, strvar) print rs.group() 用正则表达式来获取一段文本中的任意字

使用正则表达式匹配任意字符包括空格和换行符

注:元字符包括\ | ( ) [ ] { } ^ $ * + ? . ) 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:\n\s*\r评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</>|<.*? />

正则表达式匹配任意字符(包括换行符)的写法

[\s\D]*    匹配换行和空格 今天想使用正则表达式来获取一段文本中的任意字符. 于是很随意得就写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本. 于是查了一下手册,才发现正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符.同时,手册上还有一句话:要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式. 于是我将正则表达式的匹配规则修改如下: ([.\n]*),当然,如果是在C#程序中直接写到话,需要改为([.\\n]*) 结果再

在使用easyui,datagrid时,JSON中的如果含有换行符,则不能显示数据

http://www.xuebuyuan.com/2103538.html 每项值需处理换行符 item = item.Replace("\r\n", ""); //或\\r\\n替换换行符 http://www.cnblogs.com/lhws/archive/2013/08/16/3262301.html 在easyui中的datagrid中使用行内编辑时textarea的换行保存到mysql数据库为\n在textarea中输入回车符 在js读取textarea

Linux文件和windows文件在 换行符的区别

Linux或Unix文件,和windows文件,在来回处理时,如果不注意 换行符的区别,可能导致程序错误!!!深刻的教训.... 在早期的打印机时代,开始新的一行要占用两个字符的时间.如果到了一行的结尾处,你要快速回到新的一行的开头,需要打印针头在纸面上飞快地掠过,常常会在纸面上留下污点.解决这个问题的办法就是,用两个字符:一个字符<Return>来移到第一列,另一个字符<Line feed>来新增一行.计算机产生以后,存储较为昂贵,在如何解决回车换行这个老问题上,人们产生了不同的

正则表达式模式修正符

模式修正符号在正则表达式定界符之外使用(最后一个斜线“/”之后),例如“php/i”.其中“/php/”是一个正则表达式的模式,而“i”就是修正此模式所使用的修正符号,用来匹配时不区分大小写.模式修正符可以调整正则表达式的解释,扩展了正则表达式在匹配.替换等操作时的某些功能,而且模式修正符号也可以组合使用,更增强了正则表达式的处理能力.例如“/php/Uis”则是使用“U”.“i”和“s”三个模式修正符组合在一起使用.模式修正符对编写简洁而简小的表达式大有帮助,在下面的表格中,列出了一些常用的模

关于php正则表达式模式修饰符

一直以来,以为自己的正则表达式学的还算可以(基本工作上遇到的问题都能解决),但有时候却是知其然而不知其所以然,在网上看到这篇文章,解释了之前的很多疑问,记录下来,随时温故而知新. i (PCRE_CASELESS) 如果设置了这个修饰符, 模式中的字母会进行大小写不敏感匹配. m (PCRE_MULTILINE) 默认情况下, PCRE认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符(^)仅匹配字符串的开始位置, 而"行末"元字符($