下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、正则表达式选项可以使用影响匹配行为的选项修改正则表达式模式。可以通过下列两种基本方法之一设置正则表达式选项:可以在Regex(pattern,options)构造函数中的 options 参数中指定,其中 options 是 RegexOptions 枚举值的按位或组合;也可以使用内联(?imnsx-imnsx:)分组构造或(?imnsx-imnsx)其他构造在正则表达式模式内设置它们。在内联选项构造中,一个选项或一组选项前面的减号(-)用于关闭这些选项。例如,内联构造(?ix-ms)将打开 IgnoreCase 和IgnorePatternWhiteSpace 选项而关闭 Multiline
2、 和 Singleline 选项。默认情况下,关闭所有正则表达式选项。下表列出了 RegexOptions 枚举的成员以及等效的内联选项字符。请注意,选项 RightToLeft 和 Compiled 只适用于表达式整体而不允许内联。(它们只能在 Regex 构造函数的 options 参数中指定。)选项 None 和 ECMAScript不允许内联。RegexOption 成员内联字符说明NoneN/A 指定不设置任何选项。IgnoreCasei 指定不区分大小写的匹配。Multilinem 指定多行模式。更改人和$的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结
3、尾匹配。ExplicitCapturen 指定唯一有效的捕获是显式命名或编号的(?.)形式的组。这允许圆括号充当非捕获组,从而避免了由(?:.)导致的语法上的笨拙。CompiledN/A 指定正则表达式将被编译为程序集。生成该正则表达式的 Microsoft 中间语言(MSIL)代码;以较长的启动时间为代价,得到更快的执行速度。Singlelines 指定单行模式。更改句点字符(.)的含义,以使它与每个字符(而不是除n 之外的所有字符)匹配。IgnorePatternWhitespacex 指定从模式中排除非转义空白并启用数字符号(#)后面的注释。(有关转义空白字符的列表,请参见字符转义。)请
4、注意,空白永远不会从字符类中消除。RightToLeftN/A 指定搜索是从右向左而不是从左向右进行的。 具有此选项的正则表达式将移动到起始位置的左边而不是右边。 (因此,起始位置应指定为字符串的结尾而不是开头。)为了避免构造具有无限循环的正则表达式的可能性,此选项不能在中流指定。但是,(?)回顾后发构造提供了可用作子表达式的类似替代物。RightToLeft 只更改搜索方向。它不会反转所搜索的子字符串。预测先行和回顾后发断言不改变:预测先行向右搜索;回顾后发向左搜索。ECMAScriptN/A 指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCase 和 M
5、ultiline 标志一起使用。将 ECMAScript同任何其他标志一起使用将导致异常。CultureInvariantN/A 指定忽略语言中的区域性差异。有关详细信息,请参见在 RegularExpressions 命名空间中执行不区分区域性的操作。反向引用反向引用提供查找重复字符组的方便的方法。它们可被认为是再次匹配同一个字符串的快捷指令。正则表达式选项可以使用影响匹配行为的选项修改正则表达式模式。可以通过下列两种基本方法之一设置正则表达式选项:可以在 Regex(pattern,options)构造函数中的 options 参数中指定,其中 options 是 RegexOptions
6、 枚举值的按位“或组合;也可以使用内联(?imnsx-imnsx:)分组构造或(?imnsx-imnsx)其他构造在正则表达式模式内设置它们。在内联选项构造中,一个选项或一组选项前面的减号(-)用于关闭这些选项。例如,内联构造(?ix-ms)将打开IgnoreCase 和 IgnorePatternWhiteSpace 选项而关闭 Multiline 和 Singleline 选项。默认情况下,关闭所有正则表达式选项。下表列出了 RegexOptions 枚举的成员以及等效的内联选项字符。请注意,选项 RightToLeft 和 Compiled 只适用于表达式整体而不允许内联。(它们只能在
7、Regex 构造函数的 options 参数中指定。)选项 None 和 ECMAScript不允许内联。RegexOption 成员内联字符说明NoneN/A 指定不设置任何选项。IgnoreCasei 指定不区分大小写的匹配。Multilinem 指定多行模式。更改人和$的含义,以使它们分别与任何行的开头和结尾匹配,而不只是与整个字符串的开头和结尾匹配。ExplicitCapturen 指定唯一有效的捕获是显式命名或编号的(?.)形式的组。这允许圆括号充当非捕获组,从而避免了由(?:.)导致的语法上的笨拙。CompiledN/A 指定正则表达式将被编译为程序集。生成该正则表达式的 Micr
8、osoft 中间语言(MSIL)代码;以较长的启动时间为代价,得到更快的执行速度。Singlelines 指定单行模式。更改句点字符(.)的含义,以使它与每个字符(而不是除n 之外的所有字符)匹配。IgnorePatternWhitespacex 指定从模式中排除非转义空白并启用数字符号(#)后面的注释。(有关转义空白字符的列表,请参见字符转义。)请注意,空白永远不会从字符类中消除。RightToLeftN/A 指定搜索是从右向左而不是从左向右进行的。 具有此选项的正则表达式将移动到起始位置的左边而不是右边。 (因此,起始位置应指定为字符串的结尾而不是开头。)为了避免构造具有无限循环的正则表达
9、式的可能性,此选项不能在中流指定。但是,(?)回顾后发构造提供了可用作子表达式的类似替代物。RightToLeft 只更改搜索方向。它不会反转所搜索的子字符串。预测先行和回顾后发断言不改变:预测先行向右搜索;回顾后发向左搜索。ECMAScriptN/A 指定已为表达式启用了符合 ECMAScript 的行为。此选项仅可与 IgnoreCase 和 Multiline 标志一起使用。将 ECMAScript 同任何其他标志一起使用将导致异常。CultureInvariantN/A 指定忽略语言中的区域性差异。有关详细信息,请参见在 RegularExpressions 命名空间中执行不区分区域性
10、的操作。分组构造分组构造使您可以捕获子表达式组并提高具有非捕获预测先行和回顾后发修饰符的正则表达式的效率。下表描述了正则表达式分组构造。分组构造说明()捕获匹配的子字符串(或非捕获组;有关详细信息,请参见正则表达式选项中的 ExplicitCapture 选项)。使用()的捕获根据左括号的顺序从 1 开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。(?)将匹配的子字符串捕获到一个组名称或编号名称中。用于 name 的字符串不能包含任何标点符号,并且不能以数字开头。可以使用单引号替代尖括号,例如(?name)o(?)平衡组定义。删除先前定义的 name2 组的定义并在
11、 namel 组中存储先前定义的 name2 组和当前组之间的间隔。如果未定义 name2 组,则匹配将回由于删除 name2 的最后一个定义会显示 name2 的先前定义,因此该构造允许将 name2 组的捕获堆栈用作计数器以跟踪嵌套构造(如括号)。在此构造中,namel 是可选的。可以使用单引号替代尖括号,例如(?name1-name2)o(?:)非捕获组。(?imnsx-imnsx:)应用或禁用子表达式中指定的选项。例如,(?i-s:)将打开不区分大小写并禁用单行模式。有关详细信息,请参见正则表达式选项。(?=)零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。单词匹配,
12、而不与该数字匹配。此构造不会回溯。(?!)零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。开头的单词匹配。(?=)零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。面的 99 的实例匹配。此构造不会回溯。(?)非回溯子表达式(也称为“贪婪”子表达式)。该子表达式仅完全匹配一次,(也就是说,该子表达式仅与可由该子表达式单独匹配的字符串匹配。)命名捕获根据左括号的从左到右的顺序按顺序编号(与非命名捕获类似),但在对所有非命名捕获进行计数之后才开始对命名捕获进行编号。例如,模式(?abc)/d+)?(?xyz)(.*)按编号和名称产生下列捕获组。(编号为 0 的第
13、一个捕获总是指整个模式)。编号名称模式00(默认名称)(?abc)/d+)?(?xyz)(.*)11(默认名称)(?abc)/d+)22(默认名称)(.*)31(?abc)42(?xyz)其他构造下表列出了用于修改正则表达式的子表达式。构造定义(?imnsx-imnsx)对诸如不区分大小写这样的选项进行设置或禁用以使其在模式中间打开或关闭。有关特定选项的信息,请参见正则表达式选项。在封闭组结束之前,选项更改将一直有效。请参见有关分组构造(?imnsx-imnsx:)的信息,它是一个更为巧妙的形式。(?#)插入到正则表达式内部的内联注释。该注释在第一个右括号字符处终止。#至行尾X 模式注释。该注
14、释以非转义的#开头,并继续到行的结尾。(请注意,必须激活 x 选项或RegexOptions.IgnorePatternWhitespace 枚举选项才能识别此类注释。)原子零宽度断言下表中描述的元字符不会使引擎在字符串中前进或使用字符。它们只是根据字符串中的当前位置使匹配成功或失败。例如,A指定当前位置在行或字符串的开头。因此,正则表达式AFTP 只会返回那些在行的开头出现的字符串“FTP”的匹配项。例如,w+(?=d)与后跟数字的例如,b(?!un)w+b 与不以 un例如,(?=19)99 与跟在 19 后然后就不会逐段参与回溯了。断言说明A指定匹配必须出现在字符串的开头或行的开头。有关
15、详细信息,请参见正则表达式选项中的 Multiline 选项。$指定匹配必须出现在以下位置:字符串结尾、字符串结尾的n 之前或行的结尾。有关详细信息,请参见正则表达式选项中的 Multiline 选项。A 指定匹配必须出现在字符串的开头(忽略 Multiline 选项)。Z 指定匹配必须出现在字符串的结尾或字符串结尾的n 之前(忽略 Multiline 选项)。z 指定匹配必须出现在字符串的结尾(忽略 Multiline 选项)。G 指定匹配必须出现在上一个匹配结束的地方。与 Match.NextMatch()一起使用时,此断言确保所有匹配都是连续的。b 指定匹配必须出现在w(字母数字)和W(
16、非字母数字)字符之间的边界上。匹配必须出现在单词边界上,即出现在由任何非字母数字字符分隔的单词中第一个或最后一个字符上。B 指定匹配不得出现在b 边界上。限定符限定符将可选数量的数据添加到正则表达式。限定符表达式应用于紧挨着它前面的字符、组或字符类。.NETFramework 正则表达式支持最小匹配(lazy)限定符。下表描述了影响匹配数量的元字符。*指定零个或更多个匹配;例如w*或(abc)*。等效于0,。+指定一个或多个匹配;例如w+或(abc)+。等效于1,。?指定零个或一个匹配;例如w?或(abc)?。等效于0,1。n指定恰好 n 个匹配;例如(pizza)2。n,指定至少 n 个匹配
17、;例如(abc)2,。n,m指定至少 n 个但不多于 m 个匹配。*?指定尽可能少地使用重复的第一个匹配(等效于 lazy*)。+?指定尽可能少地使用重复但至少使用一次(等效于 lazy+)。?指定使用零次重复(如有可能)或一次重复(lazy?)。n?等效于n(lazyn)。n,?指定尽可能少地使用重复但至少使用 n 次(lazyn,)。n,m?指定介于 n 次和 m 次之间、尽可能少地使用重复(lazyn,m)。后向引用构造下表列出了用于将后向引用修饰符添加到正则表达式中的可选参数。后向引用构造定义number 后向引用。例如,(w)1 查找双写的单词字符。k命名后向引用。例如,(?w)k查
18、找双写的单词字符。表达式(?w)43 执行同样的操作。可以使用单引号替代尖括号,例如kcharo请注意八进制转义代码和使用相同表示法的number 后向引用之间的多义性。有关正则表达式引擎如何解析多义性的详细信息,请参见反向引用。替换构造下表列出了用于修改正则表达式以允许进行二者之一/或匹配的特殊字符。定义:|与用|(垂直条)字符分隔的任何一个术语匹配;例如,cat|dog|tiger。使用最左侧的成功匹配。(?(expression)yes|no)如果表达式在此位置匹配,则与yes部分匹配;否则,与no部分匹配。no部分可省略。表达式可以是任何有效的子表达式,但它将变为零宽度断言,因此该语法
19、等效于(?(?=expression)yes|no)。请注意,如果表达式是命名组的名称或捕获组编号,则替换构造将解释为捕获测试(在本表的下一行对此进行了描述)c若要避免在这些情况下产生混淆,则可以显式拼出内部(?=expression)。(?(name)yes|no)如果命名捕获字符串有匹配,则与yes部分匹配;否则,与no部分匹配。no”部分可省略。如果给定的名称不与此表达式中使用的捕获组的名称或编号对应,则替换构造将解释为表达式测试(在本表的上一行进行了描述)。字符类字符类是一个字符集,如果字符集中的任何一个字符有匹配,它就会找到该匹配项。下表总结了字符匹配语法字符类说明与除n 之外的任何
20、字符匹配。如果已用 Singleline 选项做过修改,则句点字符将与任何字符匹配。详细信息,请参见正则表达式选项。有关aeiou与指定字符集中包含的任何单个字符匹配。aeiou与不在指定字符集中的任何单个字符匹配。0-9a-fA-F使用连字号(-)允许指定连续字符范围。pname与name指定的命名字符类中的任何字符匹配。支持的名称为 UnicodeZ、IsGreek、IsBoxDrawing。组和块范围。例如,Ll、Nd、Pname与在name中指定的组和块范围中未包含的文本匹配。w与任何单词字符匹配。等效于 Unicode 字符类别pLlpLupLtpLopNdpPc果用 ECMAScr
21、ipt 选项指定了符合 ECMAScript 的行为,则w 等效于a-zA-Z_0-9O。如W与任何非单词字符匹配。等效于 Unicode 类别ApLlpLupLtpLopNdpPc果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则W 等效于 Fa-zA-Z_0-9O。如s与任何空白字符匹配。等效于 Unicode 字符类别fnrtvx85pZ项指定了符合 ECMAScript 的行为,则s 等效于fnrtv。O 如果用 ECMAScript选S与任何非空白字符匹配。等效于 Unicode 字符类别Afnrtvx85pZ选项指定了符合 ECMAScript 的行为,则S 等效于人fnrtv。如果用 ECMAScriptd与任何十进制数字匹配。等效于pNd(对于 Unicode 类别)和0-9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物克隆技术师中级季度工作总结报告
- 2025年体育最近面试真题及答案
- 2025年职场写作实务试题及答案
- 2025年初中七年级历史周试题及答案
- 生物技术公司技术合作合同书
- 客车智能化校车服务与安全系统创新创业项目商业计划书
- 地面保温隔热材料创新创业项目商业计划书
- 农产品批发电子支付平台创新创业项目商业计划书
- 国内制冷系统介绍
- 2026年中国泵前管行业市场规模及投资前景预测分析报告
- 危险化学品法律法规培训
- 梦幻丛林教学课件
- 邮政银行校招笔试题目及答案
- 雪糕生产车间管理制度
- 2025年中国节能环保集团有限公司招聘笔试参考题库含答案解析
- 2025年中国邮政联合校园招聘高频重点提升(共500题)附带答案详解
- 小学生珍惜时间主题课件
- 昭苏课件教学课件
- 让问候温暖人心国旗下讲话
- 胃出血检查报告图片
- 国家安全教育高教-第六章坚持以经济安全为基础
评论
0/150
提交评论