C# Regex正则匹配所有字符(遇到换行回车\r\n问题)

废话不多说,直接上内容

使用Regex.Match()方法的时候,想匹配一个子串,但是要匹配的内容可能在我加载的资源中出现换行,比如我的资源内容为john \r\n smith,我想把john smith匹配出来。

1. 正则表达式中点号(.)代表除了\n以外的所有字符,但是这仅限于在中括号外使用([]),如果在中括号内使用,就仅代表点号本身,所以这个正则可以写为 "john(.|\n)*?smith"。

2. 正则表达式中\s代表包含制表(\t),换行,空格的所有空白字符,\S代表不包含制表,换行,空格的所有非空白字符,那么这2个自由组合就可得到所有字符,所以可以这么写"john[\s\S]*?smith",

3. C#正则表达式namespace中Regex.Match()方法接收第3个参数,这个参数是一个RegexOptions枚举,经过我的试验,发现我要匹配换行和回车的内容的时候,把第3个参数指定为RegexOptions.SingleLine,在正则中可以写"john.*?smith",一样能匹配成功。所以这也作为1种方法吧,猜测是增强了点号的匹配效果,比如说能匹配\n(当然只是1种猜测,检测可以在字符串中加入单独的\n,不要\r,也能匹配出结果)

注:1中使用小括号,用或连接, 2中使用中括号,中括号内的正则自动选择。

\r 回车 code=13 return (弱智的理解为光标移动到本行的起始位置,即Y坐标不变)

\n 换行code=10 newline (弱智的理解为光标移动到下一行的x坐标不变的位置)

在windows OS下,我们键盘上的enter键执行了 \r\n 的操作,但是在Linux下只有 \n 的操作。因此代码中需要注意下。

《完》

C# Regex正则匹配所有字符(遇到换行回车\r\n问题)

时间: 2024-08-02 13:09:16

C# Regex正则匹配所有字符(遇到换行回车\r\n问题)的相关文章

[转载]正则匹配任意字符(包括换行)

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

正则匹配中文字符

有如下字符: <li><a href="/song?id=185613">惊叹号</a></li><li><a href="/song?id=185614">迷魂曲</a></li> 怎么写正则才能匹配出" 迷魂曲"呢? 答: reg1 = /id=185614">([u4e00-\u9fa5]{3})<\/a>/g; va

正则匹配指定字符之间的内容,并替换(多个匹配替换)

var str="是吗@Test1:我觉得你说的很对@Test:学无止境"; var r=str.match(/@.*?:/ig); for (var index = 0; index < r.length; index++) { str=str.replace(r[index],"<a>"+r[index]+"</a>"); } console.log(str); 原文地址:https://www.cnblogs.

关于php中正则匹配包括换行符在内的任意字符的问题总结

要使用正则匹配任意字符的话,通常有以下几种方法,这里我分别对每一种方法在使用的过程中做一个总结: 第一种方式:[.\n]*? 示例 ? PHP preg_match_all('/<div class="list">[.\n]*?<\/div>/i', $content, $data); 按道理这种方式应该是可以的,但我测试发现不行,因为这里中括号里面的“.”被当作一个普通的英文句号去处理了,而不是通配符,因此这里只能匹配到包含英语句号及换行符在内的任意内容了.

Python3正则匹配re.split,re.finditer及re.findall函数用法详解

这篇文章主要介绍了Python3正则匹配re.split,re.finditer及re.findall函数用法,结合实例形式详细分析了正则匹配re.split,re.finditer及re.findall函数的概念.参数.用法及操作注意事项,需要的朋友可以参考下 本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法.分享给大家供大家参考,具体如下: re.split re.finditer re.findall @(python3) 官方 r

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

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

关于Boost,C Regex对短目标字符串正则匹配的性能分析

昨天对长目标字符串下的各种正则匹配库性能进行了总结,得出结论是Boost regex性能最佳.今天将其应用到项目当中,果不其然,长字符串匹配带来的性能损失基本没有了,当然,目前规模并不算太大,但是在可预计规模内Boost可以完全达到要求. 不过有一点,在Boost,C同时去除长字符串匹配的影响后,剩下都是短字符串匹配,发现Boost比C好的并不是好很多,例如10000+次短字符匹配中,其中包含匹配成功和不成功的,Boost regex+系统其他模块用时130ms左右,而C regex+系统其他模

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

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

PHP正则匹配6到16位字符组合(且只能为数字、字母、下划线)

php正则匹配6到16位的字符串. 只允许包含数字.字母.下划线组成的6到16位字符,符合返回ture,否则返回false. 解答: 6到16位,正则可以这样写:{6,16}. 任意的字符6到16位的正则表达式是这样:.{6,16} 仅允许数字.字母.下划线的组合,正则为:[0-9_a-zA-Z]   整合一下,完整的正则就是: ^[_0-9a-z]{6,16}$ 以下是应用此正则验证密码的例子. php; auto-links:false;"><?php /** * php正则验证