博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于正则表达式结果不一致
阅读量:4595 次
发布时间:2019-06-09

本文共 1133 字,大约阅读时间需要 3 分钟。

这个时间点本人还在学习正则表达式,不得不说遇到困惑的地方了。

下面就直接切入主题了,原本是想匹配百家姓的,为了快速看到效果,我使用了RegEx Tester测试工具,看看是否能匹配到

以下为百家姓的部分内容

赵Zhào:造父为周穆王驾车,穆王把赵城赐了给他,其后代以国为姓。赵匡胤是宋代的开国皇帝,据说赵姓放在第一位与此有关。钱Qián:彭祖的孙子彭孚在西周朝廷中任钱府上士,其后人以其官为姓。孙Sūn:周文王的一后代叫惠孙,他的后代以他的名字“孙”作为姓。李Lǐ:皋陶的后人理征因得罪纣王被处死,其妻儿在一棵李子树下摘果充饥得以活命,其后人为纪念李子的救命之恩改为“李”姓。周Zhōu:唐代为避玄宗名讳,姬姓大臣改姓周。吴Wú:周太王亶父之子太伯、仲雍建立吴国,其子孙称为吴氏。郑zhèng:郑桓公遗族以国名为姓。王Wáng:出自姬姓,为周文王第十五子毕公高的后代。

 由于文章姓氏都在拼音的前面,我刚开始的想法竟然是只要将匹配到拼音前就ok了,于是想当然的用了字母,可是这里的是拼音,结果自然是匹配结果为0,于是我尝试用了第二种方式,也就是把:前的取出来就ok了,于是我的正则表达式为

^[^:]

  如此,我进行了匹配测试,得到以下结果

 满心以为成功了,可是我在C#中运行的结果并不太满意,他只匹配了一个姓氏,那就是赵

我不太明白是哪里出了问题

//读取文件            string str = File.ReadAllText(@"F:\爬虫网站获取\百家姓.txt",Encoding.UTF8);            //将匹配到的数据放入匹配集合中            MatchCollection mc = Regex.Matches(str, @"^[^:]");            int i = 0;            //输出匹配字符            foreach (Match m in mc)            {                Console.Write(m + " ");                i++;                if (i % 5 == 0)                {                    Console.WriteLine();                }                                            }

  运行结果只有一个字:赵,如果说正则没有错,那为何两种结果?

 

转载于:https://www.cnblogs.com/dwj2012/p/5331198.html

你可能感兴趣的文章
排版系列1
查看>>
IDEA 生成 jar 包
查看>>
加减乘除混合版
查看>>
linux基础6-bash shell编程
查看>>
php 语法
查看>>
回顾MySpace架构的坎坷之路
查看>>
ubuntu系统无eth0网卡解决办法
查看>>
六.计算机网络互联基础
查看>>
JS兼容各个浏览器的本地图片上传即时预览效果
查看>>
JS编写日历控件(支持单日历 双日历 甚至多日历等)
查看>>
### 学习《C++ Primer》- 6
查看>>
IOS中实现单例
查看>>
Math 对象
查看>>
[luoguP1877] [HAOI2012]音量调节(DP)
查看>>
重磅 | 2017年深度学习优化算法研究亮点最新综述火热出炉
查看>>
clipboard.js 介绍
查看>>
(二)程序中的内存&&栈
查看>>
一个实例来见证LINGO的强大
查看>>
C# — WinForm TCP连接之服务器端
查看>>
HTML8
查看>>