NET下正则使用基础.docVIP

  • 2
  • 0
  • 约1.34万字
  • 约 24页
  • 2020-04-09 发布于广东
  • 举报
NET下正则使用基础 概述 匹配模式指的是一些可以改变」[侧表达式匹配行为的选项或修饰符。不同的语言支持的匹配 模式不同,使用的方式也不同。 一般可分为全局和内联两种。下面主要介绍.NET屮的匹配模式,其它语言的匹配模式, 后续视情况补充。 匹配模式 全局匹配模式和内联匹配模式概述 .NET中的全局匹配模式是通过RegexOptions枚举值指定的,可以按位“或”进行组合, 全局匹祀模式只能作用于整个正则表达式。全局匹配模式提供的模式更多,可以灵活的动态 指定匹配模式。 而内联匹配模式是通过在疋则表达式中,使用(?imnsx-imnsx:)或(?imnsx-imnsx)的分组构 造来改变正则表达式的匹配行为的。内联匹配模式更灵活、简洁,但是提供的模式较少。 下表摘口 MSDN ,部分说明做了修改。 RegexOption 成员 内联字符 说明 None N/A 指定不设置任何选项。 IgnorcCasc ■ 1 指定不区分人小写的匹配。 Multiline m 指定多行模式。更改人和$的含义,以使它们分别与任何行的开头和结尾匹配,而不只 是与整个字符串的开头和结尾匹配。 ExplicitCapture n 指定唯一有效的捕获是显式命名或编号的(? name ???)形式的组。这允许圆括号充当非 捕获纽,从而避免了由(?:-)导致的语法上的笨拙。 Compiled N/A 指定正则表达式将被编译为程序集。生成该正则表达式的Microsoft中间语言(MSIL)代 码;以较长的启动时间为代价,得到更快的执行速度。 Singlclinc s 指定单行模式。更改句点字符(.)的含义,以使它与每个字符(而不是除\n之外的所有 字符)匹配。 IgnorcPattcm Whitespace x 指定从模式屮排除非转义空口并启川数字符号(#)后面的注释。请注意,空口永远不会从 字符类中消除。 RightToLeft N/A 指定搜索是从右向左而不是从左向右进行的。具有此选项的正则表达式将移动到起始位置 的左边而不是右边。 ECMAScript N/A 指定已为表达式启用了符合ECMAScript的彳亍为。此选项仅与IgnoreCase和Multiline 标志一起使用。将ECMAScript同任何其他标志一起使用将导致异常。 Culturclnvariant N/A 指定忽略语言中的区域性差界。 全局匹配模式 卜?血根据各种模式使用的频率进行讲解。 2.2.1 IgnoreCase忽略人小写 儿乎所冇支持正则的语言中都提供了这一模式,是应用蝕多的模式z—,同时也是被“滥” 用最多的模式之一。 开启忽略大小写模式,则字符可以同时匹配大写或小写形式。比如在此模式下,.正则表达式 “ br ”可同时匹配“ br ”和“ vBR ” 但并不是所有的字符都有大小写形式,所以在书写的正则中,如果不存在可区分大小写形式 的元字符或是字符序列时,开启这一模式是没有任何意义的。 比如替换一般的html标签的正则表达式 string result = Regex .Replace(srcStr, @n[A]*H,HU , RegexOptions .IgnoreCase); 因为ri*没有哪一个元字符或是字符序列具有人小写形式,所以这里的 RegexOptions .IgnoreCase是多余的,用在这里虽然不会改变匹配结果,但是会降低匹配效 率,同吋这也不是一个好的习惯。 只有在正则表达式屮,注意是正则表达式中,而不是待匹配的源字符串中,涉及到大小写形 式的元字符或是字符序列时,才使用IgnoreCase模式。 Multiline 多行模式 多行模式改变的是“八”和“ $ ”的匹配行为,使“人”和“ $ ”不仅可以匹配整个字 符串的开始和结束位宜,还可以匹配每行的开始和结束位置。 首先说明一下“行”的范围。虽然我们在程序中习惯用“ \r\n ”来表示换行,但实际上“ \r ” 和“ \n ”是不相关的两个字符,一个表示回车,一个表示换行。由于历史原因,“ \「”并 不是所有系统都支持的,所以“行”是由“ \n ”來分割的,英中“ \n ”属于前一 “行”, 而不属于后一 “行”。 举例来说,字符串“ a\r\nbc\r\n ”共冇三行,“ a\r\n ”为一行,“ bc\r\n ”为一行,最后 还有一个“”空行。 在不开启多行模式情况卜?,“八”和“ $ ”匹配范围 “八”的匹配范围 MatchCollection me = Regex .Matchcs(a\r\nbc\r\n, @AU ); foreach (Match ni in me) richTextBox2.Text +=匹配内容:+ m.Value + H 匹配开始索引:” + m.Index

文档评论(0)

1亿VIP精品文档

相关文档