关于正则表达式结果不一致

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

下面就直接切入主题了,原本是想匹配百家姓的,为了快速看到效果,我使用了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();
                }

            }

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

时间: 2024-08-03 19:00:32

关于正则表达式结果不一致的相关文章

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

js正则表达式实例(汇总)

来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢  如  30CAC0040 取出40  3SFASDF92 取出92  正则如下://d+$/g   统一空格个数  来源:正则匹配空格的问题  字符串内字符键有空格,但是空格的数量可能不一致,通过正则将空格的个数统一变为一个.  例如:蓝色理想  变成:蓝色理想  aobert的正则:  <script>  var str="蓝色理想"  var reg=//s+/g  str = str.repl

一款非常好用的boostrap的验证插件、再也不用自己手写正则表达式和js了

基于jquery.bootstrap数据验证插件bootstrapValidator教程 bootstrap:能够增加兼容性的强大框架. 因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说. 需要引用css: bootstrap.min.css bootstrapValidator.min.css js: jquery-1.10.2.min.js bootstrap.min.js bootstrapValidator.min.js (下载实例)

Python之re模块 —— 正则表达式操作

这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ &

js正则表达式进行格式校验

今天做了个js正则表达式的练习,利用正则表达式进行注册信息格式验证,注册信息界面如下: 格式要求: 1.学号项不能为空,必须为纯数字,不能与数据库中的重复,正则表达式/^\d+$/g: 2.姓名项不能为空: 3.密码不能为空且无空格判断空格text.split(" ").length != 1,安全等级分为3个等级,若全为字母或者数字为1级,正则表达式(text.search(/^[a-zA-Z]+$/g) != -1) || (text.search(/^[0-9]+$/g) !=

《正则表达式必知必会》

正则表达式(regular expression, 简称RegEx) 用途:查找替换 多个匹配结果:绝大多数正则表达式引擎的默认行为是只返回第1个匹配结果 .只能匹配\n外的任何单个字符 WANRING:验证某个模式不能获得预期的结果并不困难,但如何验证它不会匹配到你不想要的东西可就没那么简单了. -(连字符)是一个特殊的元字符,作为元字符它只能在[和]这间.在字符集合以外的地方,-只是一个普通的字符,只能与-本身相匹配.因此,在正则表达式里,-字符不需要被转义 DOS和Windows文件路径用

1月28日 表单验证和正则表达式

表单验证:一.非空验证:1.内容是不是空的.判断值的长度是不是0.length属性. 2.内容是不是改变了. 二.对比验证:1.验证两个控件值的关系(相同,大小) 2.验证控件的值与某个固定值的关系. 三.范围验证: 四.格式验证:正则表达式.regularexpression 邮箱验证:(其他验证也是这个形式,只要把正则表达式换一下就可以) function checkEmail() { var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+

Javascript正则构造函数与正则表达字面量&amp;&amp;常用正则表达式

本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达式: 使用new RegExp()构造函数 使用正则表达字面量 先说结果,使用正则表达字面量的效率更高. 下面的示例代码演示了两种可用于创建正则表达式以匹配反斜杠的方法: 1 //正则表达字面量 2 var re = /\\/gm; 3 4 //正则构造函数 5 var reg = new RegE

WebMisSharp,WebMisCentral,企业框架正则表达式规则共享专版

ElegantWM.WebUI/Application/common/src/Tools.js 欢迎大家贡献更多的正则验证规则,目前支持如下: /*****************************************************************/ /* VType自定义校验 */ /*****************************************************************/ Ext.apply(Ext.form.VTypes