- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 概述
匹配模式指的是一些可以改变正则表达式匹配行为的选项或修饰符。不同的语言支持的匹配模式不同,使用的方式也不同。
一般可分为全局和内联两种。下面主要介绍 .NET 中的匹配模式,其它语言的匹配模式,后续视情况补充。
2 匹配模式
2.1 全局匹配模式和内联匹配模式概述
.NET 中的全局匹配模式是通过 RegexOptions 枚举值指定的,可以按位“或”进行组合,全局匹配模式只能作用于整个正则表达式。全局匹配模式提供的模式更多,可以灵活的动态指定匹配模式。
而内联匹配模式是通过在正则表达式中,使用 (?imnsx-imnsx:) 或 (?imnsx-imnsx) 的分组构造来改变正则表达式的匹配行为的。内联匹配模式更灵活、简洁,但是提供的模式较少。
下表摘自 MSDN ,部分说明做了修改。
RegexOption 成员
内联字符
说明
None
N/A
指定不设置任何选项。
IgnoreCase
i
指定不区分大小写的匹配。
Multiline
m
指定多行模式。更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。
ExplicitCapture
n
指定唯一有效的捕获是显式命名或编号的 (? name …) 形式的组。这允许圆括号充当非捕获组,从而避免了由 (?:…) 导致的语法上的笨拙。
Compiled
N/A
指定正则表达式将被编译为程序集。生成该正则表达式的 Microsoft 中间语言 (MSIL) 代码;以较长的启动时间为代价,得到更快的执行速度。
Singleline
s
指定单行模式。更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
IgnorePatternWhitespace
x
指定从模式中排除非转义空白并启用数字符号 (#) 后面的注释。请注意,空白永远不会从字符类中消除。
RightToLeft
N/A
指定搜索是从右向左而不是从左向右进行的。具有此选项的正则表达式将移动到起始位置的左边而不是右边。
ECMAScript
N/A
指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCase 和 Multiline 标志一起使用。将 ECMAScript 同任何其他标志一起使用将导致异常。
CultureInvariant
N/A
指定忽略语言中的区域性差异。
2.2 全局匹配模式
下面根据各种模式使用的频率进行讲解。
2.2.1 IgnoreCase 忽略大小写
几乎所有支持正则的语言中都提供了这一模式,是应用最多的模式之一,同时也是被“滥”用最多的模式之一。
开启忽略大小写模式,则字符可以同时匹配大写或小写形式。比如在此模式下,正则表达式“ br ”可同时匹配“ br ”和“ BR ”
但并不是所有的字符都有大小写形式,所以在书写的正则中,如果不存在可区分大小写形式的元字符或是字符序列时,开启这一模式是没有任何意义的。
比如替换一般的 html 标签的正则表达式
string result = Regex .Replace(srcStr, @[^]* , , RegexOptions .IgnoreCase);
因为 [^]* 没有哪一个元字符或是字符序列具有大小写形式,所以这里的 RegexOptions .IgnoreCase 是多余的,用在这里虽然不会改变匹配结果,但是会降低匹配效率,同时这也不是一个好的习惯。
只有在正则表达式中,注意是正则表达式中,而不是待匹配的源字符串中,涉及到大小写形式的元字符或是字符序列时,才使用 IgnoreCase 模式。
2.2.2 Multiline 多行模式
多行模式改变的是“ ^ ”和“ $ ”的匹配行为,使“ ^ ”和“ $ ”不仅可以匹配整个字符串的开始和结束位置,还可以匹配每行的开始和结束位置。
首先说明一下“行”的范围。虽然我们在程序中习惯用“ \r\n ”来表示换行,但实际上“ \r ”和“ \n ”是不相关的两个字符,一个表示回车,一个表示换行。由于历史原因,“ \r ”并不是所有系统都支持的,所以“行”是由“ \n ”来分割的,其中“ \n ”属于前一“行”,而不属于后一“行”。
举例来说,字符串“ a\r\nbc\r\n ”共有三行,“ a\r\n ”为一行,“ bc\r\n ”为一行,最后还有一个“”空行。
在不开启多行模式情况下,“ ^ ”和“ $
您可能关注的文档
- mysql在vc中的具体实现及应用.doc
- mysql在vc中的具体实现及应用文库.doc
- my-网络编程.doc
- N5 PRO2实现Flash播放教程.doc
- nagios监控mysql详细配置.doc
- NC BO-VO-DMO编写规范和注意事项.doc
- NC netcat 使用方法 教程.doc
- NCAE考试科目.doc
- NC客开考试题_2008.doc
- NEC SPEAX 23TA传真机使用.doc
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)