网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
正则表达式中的单行和多行
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
众所周知,在.NET下面专门有个Regex类是处理正则表达式的。本人几年的编程经历,多多少少也接触了一些正则表式处理字符串的问题,可以说对于写正则表达式还算是小有心得。

这几年一直在.NET下面编程,与Regex类接触的也挺多的,老早就发现RegexOptions选项中有很多是其它语言(如C/C++,JS)的正则表达式中没有的,像是Compiled,ExplicitCapture,RightToLeft,Singleline几个就比较特别的。而Singleline和Multiline这两项单从字面上的意思来说是“单行模式”和“多行模式”,具体什么意思我也不会多解释了吧,用正正则表达式的人都知道。在我的潜意识里一直认为这两项是互斥的,不能同时存在,一直在下意识的避开同时去使用。

最近在做一个正则表达式的工具的时候也一直带着这个想法去做,把这两项做成了RadioButton单选框,程序写好后也调试过了,应该说绝大部分的情况下也没有什么问题----很多时候我们接触到的待匹配的字符串都只有一行,至少我是这样的,而且咱又不是专业测试人员啊------直到有一天一个同事跟我说了一下,在一次使用的过程中发现原来对这两个项的理解可能有些问题,我再回过头来仔细查阅了一下相关的文档------原来真的是我错了。字面上这个个意思是互斥的,没有问题,可是这两项修饰的地方不一样,Multiline修饰的是^与$,就是说没有Multiline的时候,把^和$与当作每一行(\n结尾的)的开头和结束来匹配,有Multiline的时候是与整个字符串的开头和结尾匹配;而Singleline修饰的是''.''的时候,就是说有Singleline的时候匹配的是所有字符(包括\n),没有Singleline的时候,匹配的是除\n外的所有字符。这两个根本就是不沾边的,也不是以前我想像的那样互斥的关系。

回过头来再看看RegexOptions枚举,这本身就是一个带Flag特性的枚举,说明里面的项一般情况下可以任意组合,这也间接说明了Multiline与Singleline是可以共存的。唉,只怪自己先入为主太深了,没有深入去了解每一项的含义,只是想当然。

明白自己错了就马上改程序了,好在对于程序来说改起来还是比较容易的,程序改好后顺便也看了看JS中的正则表达式,是不是也有这样的问题(我的程序是用来生成.NET和JS下的正则表达式的),还好虚惊一场,JS还是要简单的多,除了gim就没有别的了,g和i就不说了,不在本文的讨论范围之内。m和Multiline一个意思。要想在JS里达到.NET中Singleline的效果的话,只能用[.\n]别无它法。
  • 上一篇资讯: 超越F#基础
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号