正则表达式匹配任意字符

写代码的时候需要用到正则表达式匹配包含换行符(\n)在内的任意字符,然后就上菜鸟教程查了下正则表达式的写法,看到下面的内容:

这里写图片描述
菜鸟教程相应地址

使用下面代码

            //当不存在换行\n换行符时,可以正常匹配
            string str1 = "<test> sdfsd dfsdf fsdf    <test>";
            string res1 = Regex.Match(str1, "<test>.*<test>").Value;
            Console.WriteLine("res1:");
            Console.WriteLine(res1);//输出: <test> sdfsd dfsdf fsdf    <test>
            Console.WriteLine();

            //当存在换行\n换行符时使用菜鸟教程的写法,无法正常匹配
            string str2 = "<test> sdfsd\n dfs\ndf fsdf    <test>";
            string res2 = Regex.Match(str2, "<test>[.\n]*<test>").Value;
            Console.WriteLine("res2:");
            Console.WriteLine(res2);//输出为空
            Console.WriteLine();

结果竟然不能正确匹配包含换行符\n在内的任意字符,用搜索引擎另外查资料,发现菜鸟教程的文档有错,
http://www.cnblogs.com/learnmoredaybyday/p/3857337.html
最后的结论是
在正则表达式中,”.”可以匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,需要使用像(.|\n)这种模式,而不是[.\n]模式

            //正确匹配包含\n在内的任意字符的写法
            string str3 = "<test> sdfsd\n dfs\ndf fsdf    <test>";
            string res3 = Regex.Match(str3, "<test>(.|\n)*<test>").Value;
            Console.WriteLine("res3:");
            Console.WriteLine(res3);//输出: <test> sdfsd\n dfs\ndf fsdf    <test>
            Console.WriteLine();

至于菜鸟教程的错误,我已经在截图反馈,希望他们及时更正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值